gpt4 book ai didi

delphi - 当 IdTCPClient.IOHandler.ReadStream() 时连接正常关闭!

转载 作者:行者123 更新时间:2023-12-02 04:29:00 25 4
gpt4 key购买 nike

我是delphi新手,这是我的第一个项目。这是一些代码:

procedure TForm1.Button2Click(Sender: TObject);
responseStringFromServer:TStringStream;
begin
try
if IdTCPClient1.Connected then
begin
dataSentToDevice:= 'http/1.0 content-length: 344 content-type: text/xml <?xml version="1.0" encoding="UTF-8" ?> ...'
IdTCPClient1.IOHandler.WriteLn(dataSentToDevice);
responseStringFromServer := TStringStream.Create;
IdTCPClient1.IOHandler.ReadStream(responseStringFromServer);
...

我有一个设备连接到本地网络。我设法成功连接到它。发送命令也可以,但是当我这样做时

IdTCPClient1.IOHandler.ReadStream(responseStringFromServer);

然后它会等待,直到设备完成处理并发生异常:“连接正常关闭”。所以我无法读取设备应该发送给我的数据。设备未关闭。我读过其他帖子,我知道设备本身会断开连接。

我有一个可以与其通信的演示程序,并且运行良好。我需要在断开连接之前获取响应 xml。

请求也是http,我正在使用IdTCPClient(我需要使用xml请求,我不知道如何使用TidHTTP来做到这一点)。可能是设备发送响应后断开连接,以便我的 tcpclient 在接收数据之前获得连接断开标志。

如有任何帮助,我们将不胜感激!

最佳答案

Also the request is http and i am using IdTCPClient (i need to use xml request, i don't know how to do it with TidHTTP).

使用 IdHTTP 很简单...

  1. 将其实例拖放到您的表单上,选择它。
  2. 在对象检查器中,转到ProtocolVersion 属性,并设置它到 pv1_0,然后打开其
  3. 请求属性设置,并设置Request.ContentType 为 text/xml,以及Request.ContentEncoding 为 UTF-8,并设置其他属性,如果必填。
  4. 向您的表单添加一个按钮并双击它。
  5. 在您的代码中,创建一个实例TStringStream,并加载您的 XML内容。
  6. 将您的直播分配给IdHttp.Request.Source。
  7. 通过给出调用 IdHttp.Get() 方法它是一个主机地址。
  8. IdHttp.Get() 返回一个字符串,其中是服务器发送给您的响应。

关于delphi - 当 IdTCPClient.IOHandler.ReadStream() 时连接正常关闭!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4216675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com