我实例化了一个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());
当测试w / curl HTTP PUT
一个文件到我的服务器时,我发现MyHandler.channelRead
没有被立即调用请求Expect: 100-continue
标头被发送(curl等待服务器到回复100 Continue
。这意味着我的处理程序无法回复HTTP/1.1 100 Continue
响应,告诉客户端(curl)立即启动实际上传文件。
有趣的是,使用telnet
进一步调试此问题表明,一旦上传实际正文(在收到第一个字节后),就会调用channelRead
。
有关如何处理PUT
请求的任何提示,请使用'Expect:100-continue'标头正确触发100 Continue
响应?
答案 0 :(得分:1)
netty的示例(例如HttpHelloWorldServerHandler.java)在channelRead()方法中有以下代码:
if (is100ContinueExpected(req)) {
ctx.write(new DefaultFullHttpResponse(HTTP_1_1, CONTINUE));
}