Я инстанцирован на 4 услуги (с помощью Netty-все-4.0.9.jar) Нетти и инициализации канала путем добавления 3 ChannelHandler объектов:Как отправить HTTP 100-продолжать реакцию с Нетти
pipeline.addLast("decoder", new HttpRequestDecoder());
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("handler", new MyHandler());
Когда тестирование w/curl HTTP PUT
Ввод файла на мой сервер, и я обнаружил, что MyHandler.channelRead
не вызывается сразу для запросов с заголовком Expect: 100-continue
(curl ожидает ответа сервера 100 Continue
.Это означает, что мой обработчик не может ответить HTTP/1.1 100 Continue
ответ, чтобы сообщить клиенту (curl), чтобы немедленно начать фактическую загрузку файла.
Интересно, что дальнейшая отладка этой проблемы с telnet
показывает, что channelRead
вызывается сразу после загрузки фактического тела (сразу после получения первого байта).
Любые подсказки о том, как обращаться с PUT
запросами с заголовком «Ожидать: 100-продолжить» правильно, чтобы вызвать 100 Continue
ответ немедленно?
Я появляется обработчик HelloWorld в примере работает нормально. Я исследовал дальше и обнаружил, что у меня был HttpContentDecompressor в конвейере канала. Удаление его решило мою проблему. Спасибо за подсказку с обработчиком helloworld - работа назад назад указала мне первопричину (хотя я не уверен, почему она ведет себя так: вы можете легко воспроизвести поведение thgis, добавив «p.addLast (« deflater », new HttpContentDecompressor() 'в класс HttpHelloWorldServerInitializer. – phrinx