我有一個奇怪的問題,我正在構建一個小型restlet服務作爲練習。應用程序應該在HTTP POST上響應一些XML(specifically TwiML,因爲它是用於Twilio),並且它對於獨立請求很有效。但是,當Twilio提出要求時,響應從未完成並且超時。在比較來自Twilio的流量和正在工作的流量之後(使用假HTML表單),我將問題隔離到「Connection:close」標題,並且可以使用curl命令行中的任何內容來重現它。這裏是工作的要求:HTTP連接出錯:關閉標題
curl -i -H 'Connection: keep-alive' -X POST -d "name=value" http://localhost:8020/hello
,這裏是剛剛掛了一句:如果我殺了服務器,然後捲曲說
curl -i -H 'Connection: close' -X POST -d "name=value" http://localhost:8020/hello
「(52)從服務器空答覆」。以下是我在ServerResource中使用的代碼:
@Post
public Representation hello(Representation repr)
{
Representation result = new StringRepresentation(("<Response>\n"+
" <Say>Hello. This is a test.</Say>\n"+
"</Response>"), MediaType.APPLICATION_XML);
return result;
}
我在這裏做什麼顯然是錯誤的?我正在使用restlet-2.0,但也用2.1m1嘗試過,結果相同。我非常感謝快速反應,因爲我正在完成這個練習的最後期限。
感謝分享。這是否意味着,restlet從不能很好地處理具有「Connection:close」頭部的連接(這將是一個重要的bug)? – haridsv 2011-01-14 04:13:59
好吧,它似乎是與restlet捆綁在一起的標準restlet服務器的一個人工製品。我會假設,如果你在不同的容器(例如Jetty)中部署你的restlet,它不會遇到這個問題。但同意,這確實是一個錯誤。 – Joey 2011-01-14 13:13:06
它現在是一個官方的錯誤http://restlet.tigris.org/issues/show_bug.cgi?id=1191 – Joey 2011-01-17 23:10:41