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
。
如何正確處理PUT
PUT
請求的任何提示,以正確觸發100 Continue
響應的'Expect:100-continue'標題?
我顯示在例如在helloworld處理程序工作正常。我進一步調查,發現我在通道管道中有一個HttpContentDecompressor。刪除它解決了我的問題。感謝與helloworld處理程序的提示 - 從這裏開始工作指出我的根本原因(儘管我不確定它爲什麼表現如此 - 您可以通過添加'p.addLast(「deflater」,new HttpContentDecompressor()'到HttpHelloWorldServerInitializer類。 – phrinx