【发布时间】:2010-12-20 03:06:34
【问题描述】:
我正在构建一个作为练习的小型 restlet 服务有一个奇怪的问题。该应用程序应该在 HTTP POST 上使用一些 XML(specifically TwiML,因为它适用于 Twilio)来响应,并且对于独立请求来说效果很好。但是,当 Twilio 请求时,响应永远不会完成并且会超时。在将来自 Twilio 的流量与正在运行的流量(使用伪造的 HTML 表单)进行比较后,我将问题隔离到“连接:关闭”标题,并且可以使用 curl 命令行来重现它。这是有效的请求:
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
如果我终止了服务器,那么 curl 会说“(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,结果相同。我非常感谢您的快速响应,因为我在最后期限内完成练习。
【问题讨论】: