【发布时间】:2011-01-30 12:48:41
【问题描述】:
我正在使用 Indy idHTTP 对象从服务器请求 XML 数据。发出请求后,服务器会发送回复,我可以读取回复标头 OK: 结果 := IdHTTP1.Response.ResponseText;
然后他们的系统会继续定期发送未经请求的 XML 数据,直到预定的超时期限到期。
但是,客户现在希望我的客户端应用程序在我每次接收数据时向他们发送一个 HTTP 响应(响应基于成功解析 XML)。
如果我是服务器,我可以计算出如何发送响应,但是如何生成响应标头并使用我的 idHTTP1 客户端仅发布(或放置、发送等)标头。
我认为这在 RFC 2616 中没有完全定义,因为服务器通常发送 HTTP 响应,而不是客户端,即:
6 响应
"服务器收到并解释请求消息后响应 带有 HTTP 响应消息。”
我以为我可以使用 TIdHTTPResponseInfo 并使用 WriteHeader 方法,但如果我是客户端,我不知道如何设置与我需要回复的 URL 的链接。
我正在使用 Delphi XE 和 Indy 10.5.7
我尝试了很多方法,但都没有成功。
非常感谢任何帮助或可能的代码示例!
【问题讨论】:
-
TIdHttp是 CLIENT HTTP 组件,它相当于一个 Web 浏览器。怎么会有人给你发unsolicited XML data at regular intervals until a predetermined timeout period expires?这就像说:After doing this Google search, I keep getting new web pages in my browser until a predefined time expires. -
@Cosmin 重新阅读 RFC 2616。这是可能的。
-
是的,完全正确。除了他们的系统发送 XML 数据而不是网页。实际上我们可以看到没有任何问题。未经请求的数据接收部分工作正常。这根本不是问题,而是如何将 HTTP 响应发回给他们,这是我们需要解决的问题。
-
+1 用于查看规格! @Cosmin Prund:这就是 HTTP/1.1“保持活动”连接。让我猜猜,一些 XML-RPC 的 PHP 实现 [错误] 表现得这样?