加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi – 使用Indy HTTP Client将响应发送回服务器

发布时间:2020-12-15 09:24:18 所属栏目:大数据 来源:网络整理
导读:我正在使用Indy idHTTP对象从服务器请求 XML数据.请求完成后,服务器发送回复,我可以读取回复标题OK: result:= IdHTTP1.Response.ResponseText; 然后,他们的系统继续定期发送未经请求的XML数据,直到预定的超时时间到期. 但是,客户现在希望我的客户端应用程
我正在使用Indy idHTTP对象从服务器请求 XML数据.请求完成后,服务器发送回复,我可以读取回复标题OK:
result:= IdHTTP1.Response.ResponseText;

然后,他们的系统继续定期发送未经请求的XML数据,直到预定的超时时间到期.

但是,客户现在希望我的客户端应用程序在每次接收数据时都向他们发送HTTP响应(基于成功解析XML的响应).

如果我是服务器,我可以弄清楚如何发送响应,但是我如何生成响应头并使用我的idHTTP1客户端发布(或放置,发送等)只是标头.

这是我认为,在RFC 2616中没有完全定义,因为服务器通常发送HTTP响应,而不是客户端,即:

6 Response

“After receiving and interpreting a request message,a server responds
with an HTTP response message.”

我以为我可以使用TIdHTTPResponseInfo并使用WriteHeader方法,但是如果我是客户端,则无法解决如何设置与我需要回复的URL的链接.

我正在使用Delphi XE和Indy 10.5.7

我尝试了很多方法,但都没有成功.

任何帮助或可能的代码示例都非常感谢!

解决方法

您的问题可以分为两部分:(a)我必须将哪些数据发送到服务器以通知服务器,以及(b)如何使用IdHTTP发送此数据.

在连接关闭之前发送数据流对应于HTTP标准,而HTTP是请求 – 响应协议.如果客户端接收数据作为响应,则它无法使用自己的响应进行回复 – 客户端只能发送另一个请求.所以你的任务是找出服务器接受什么样的请求作为数据接收的确认.一旦你想到这一点,你将能够找到如何(如果)使用IdHTTP.

更新:如果您应该向服务器发送200 OK,那么这不符合HTTP协议规范.您可以尝试访问HTTP客户端后面的套接字,只发送7个字节(200 OK CRLF).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读