Как отправить 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));
}
Другие вопросы по тегам