Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 无状态HTTP会话中的进度反馈_Delphi_Rest_Indy_Delphi 2006_Indy10 - Fatal编程技术网

Delphi 无状态HTTP会话中的进度反馈

Delphi 无状态HTTP会话中的进度反馈,delphi,rest,indy,delphi-2006,indy10,Delphi,Rest,Indy,Delphi 2006,Indy10,我需要编程一个无状态服务器来执行远程方法。客户机使用REST和JSON参数传递方法名及其参数。维护结果后,会话将关闭。我必须使用Indy10,TCP/IP作为协议,因此需要考虑使用IdHTTPServer 大型结果集由Indy10分块并以部分形式发送给客户端 我现在的问题是: 如果服务器上的方法需要更长的时间才能生成结果,则它们会提供进度信息。这些是短消息。我怎样才能给客户回信 到目前为止,我在服务器上使用了writeflush,但是客户端在返回完整的结果集(包括进度信息)之前等待请求结束。如何

我需要编程一个无状态服务器来执行远程方法。客户机使用REST和JSON参数传递方法名及其参数。维护结果后,会话将关闭。我必须使用Indy10,TCP/IP作为协议,因此需要考虑使用IdHTTPServer

大型结果集由Indy10分块并以部分形式发送给客户端

我现在的问题是:

如果服务器上的方法需要更长的时间才能生成结果,则它们会提供进度信息。这些是短消息。我怎样才能给客户回信


到目前为止,我在服务器上使用了
writeflush
,但是客户端在返回完整的结果集(包括进度信息)之前等待请求结束。如何在客户端显示/处理此类进度信息,同时保持连接打开以接收同一请求的进一步数据?

在客户端,而不是常规的HTTP客户端组件
TIdHTTP
您可以在unit IdTCPClient中使用Indy class
TIdTCPClientCustom
发送请求和处理响应

此类提供对服务器响应处理的完全控制。我使用
TIdTelnet
类作为实现MessageBroker消息传递协议客户端的起点,发现它对于文本和二进制数据都稳定可靠


在接收线程中,传入的数据可以读取到分隔符,并解析为块(用于进度信息)并立即进行处理。

我需要使用TIdHTTPServer,因为我正在实现REST(一个带有来自TIdHTTP的参数的GET)。我很想使用writebufferflush之类的东西,但我无法让它工作-我总是在messagebox中获得第一个writeln,然后丢弃其余的。请参阅我的编辑,我的建议是在客户端使用TIdTCPClientCustom而不是TIdHTTP,以完全控制服务器响应的处理