Delphi THTTPRIO 控件调用webservice超时问题
2017-04-26 19:41
387 查看
单位软件在Win7下调用DLL连接webservice时出现超时问题,分析发现win7下30秒如果Webservice服务器未返回结果则超时,在winxp下没有问题(但是
时间已经达到了50秒才返回数据)。该DLL是Delphi编写调用了THTTPRIO。
开始不知道问题在哪里,以为是win7的问题,查找原因未果。后来用VS写了个程序调用webservice在win7下没有问题。随怀疑是THTTPRIO的问题
方法一: 设置 THTTPRIO三个属性
RIO.HTTPWebNode.ConnectTimeout:=600000; //10分钟
RIO.HTTPWebNode.SendTimeout:=600000;
RIO.HTTPWebNode.ReceiveTimeout:=600000; //其实只需要设置ReceiveTimeout即可。
注:网上反映在某些版本的delphi下无效。
方法二:修改源代码
1.修改SOAPHTTPTrans.pas文件。
2.找到procedure THTTPReqResp.Connect(Value: Boolean);
3.写义变量: Timeout:DWORD;
4.找到 FInetRoot := InternetOpen(PChar(FAgent), AccessType, PChar(FProxy), PChar(FProxyByPass), 0);
在该代码前添加如下代码:
Timeout:=600000;
InternetSetOption(nil, INTERNET_OPTION_RECEIVE_TIMEOUT ,
@Timeout, sizeof(Timeout));
时间已经达到了50秒才返回数据)。该DLL是Delphi编写调用了THTTPRIO。
开始不知道问题在哪里,以为是win7的问题,查找原因未果。后来用VS写了个程序调用webservice在win7下没有问题。随怀疑是THTTPRIO的问题
方法一: 设置 THTTPRIO三个属性
RIO.HTTPWebNode.ConnectTimeout:=600000; //10分钟
RIO.HTTPWebNode.SendTimeout:=600000;
RIO.HTTPWebNode.ReceiveTimeout:=600000; //其实只需要设置ReceiveTimeout即可。
注:网上反映在某些版本的delphi下无效。
方法二:修改源代码
1.修改SOAPHTTPTrans.pas文件。
2.找到procedure THTTPReqResp.Connect(Value: Boolean);
3.写义变量: Timeout:DWORD;
4.找到 FInetRoot := InternetOpen(PChar(FAgent), AccessType, PChar(FProxy), PChar(FProxyByPass), 0);
在该代码前添加如下代码:
Timeout:=600000;
InternetSetOption(nil, INTERNET_OPTION_RECEIVE_TIMEOUT ,
@Timeout, sizeof(Timeout));
相关文章推荐
- 用delphi的THTTPRIO控件调用c#写的webservice。
- 用delphi的THTTPRIO控件调用了c#写的webservice。
- C#调用Delphi编写的WebService时的问题
- Delphi COM+中调用webservice错误提示问题解决方法
- delphi调用c#写的webservice中文出现乱码的问题
- 问题-Delphi在多线程中使用其他窗体上的控件,报“尚未调用CoInitialize”解决方法
- 调用webservice超时问题的解决
- 调用WebService超时问题汇总(Java、C#)
- 问题:C#调webservice超时;结果:C#调用webservice服务超时
- DELPHI 调用webservice一个安全问题引起的内存地址错误
- CXF动态调用webservice超时问题
- (转)Delphi 调用C#编写的WebService 参数为Null解决方法 附中文乱码问题
- 调用webservice Timeout 超时问题的解决
- WMB8.0中调用WebService超时问题
- 调用webservice超时问题的解决(转载)
- 调用webservice超时问题的解决
- 调用webservice超时问题的解决[转]
- Delphi调用C#写的WebService时中文乱码的问题?
- [转]调用webservice超时问题的解决
- 调用webservice超时问题的解决