Как отправить HTTP 100-продолжение ответа с помощью netty
Я создал сервис netty 4 (используя netty-all-4.0.9.jar) и инициализировал канал, добавив 3 объекта ChannelHandler:
pipeline.addLast("decoder", new HttpRequestDecoder());
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("handler", new MyHandler());
При тестировании ж / скручиваемость HTTP PUT
в файл на моем сервере, и я нашел MyHandler.channelRead
не вызывается сразу для запросов с Expect: 100-continue
заголовок отправлен (curl ожидает ответа от сервера с 100 Continue
, Это означает, что мой обработчик не может ответить с HTTP/1.1 100 Continue
ответ, чтобы сказать клиенту (curl) немедленно начать фактическую загрузку файла.
Интересно дальнейшая отладка этой проблемы с telnet
показывает, что channelRead
вызывается сразу после загрузки фактического тела (сразу после получения первого байта).
Любые советы о том, как справиться PUT
запросы с заголовком "Expect: 100-continue" правильно инициировать 100 Continue
ответ сразу?
1 ответ
Примеры с netty (например, HttpHelloWorldServerHandler.java) имеют следующий код в методе channelRead():
if (is100ContinueExpected(req)) {
ctx.write(new DefaultFullHttpResponse(HTTP_1_1, CONTINUE));
}