2013-10-02 41 views
1

我實例化的網狀4(使用網狀-全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頭髮送(捲曲正在等待服務器回覆100 Continue。這意味着我的處理程序無法回覆HTTP/1.1 100 Continue響應告訴客戶端(curl)立即啓動實際上傳的文件。

有趣的是,使用telnet進一步調試此問題表明,一旦上傳實際正文(在收到第一個字節後),就會調用channelRead

如何正確處理PUTPUT請求的任何提示,以正確觸發100 Continue響應的'Expect:100-continue'標題?

回答

1

實例與網狀未來(例如HttpHelloWorldServerHandler.java)具有在channelRead()方法將以下代碼:

if (is100ContinueExpected(req)) { 
    ctx.write(new DefaultFullHttpResponse(HTTP_1_1, CONTINUE)); 
} 
+0

我顯示在例如在helloworld處理程序工作正常。我進一步調查,發現我在通道管道中有一個HttpContentDecompressor。刪除它解決了我的問題。感謝與helloworld處理程序的提示 - 從這裏開始工作指出我的根本原因(儘管我不確定它爲什麼表現如此 - 您可以通過添加'p.addLast(「deflater」,new HttpContentDecompressor()'到HttpHelloWorldServerInitializer類。 – phrinx

相關問題