公司有个老业务系统,用的是delphi6开发。需要调用webservice,但发现调用超时30秒弹出异常的问题。
网上查询,说delphi7的THTTPRIO控件设置超时属性就行了。但delphi6没有这个属性,只能从底层修改了。步骤:
1.打开delphi的VCL 源码,找到SOAPHTTPTrans.pas文件,把这个文件拷到项目工程文件的目录,并加到工程中。这样Delphi源文件修改后才能够生效。
2.找到procedure THTTPReqResp.Connect(Value: Boolean);行
3.写义一个变量:
    Timeout:DWORD;
4.在 FInetRoot := InternetOpen(PChar(FAgent), AccessType, PChar(FProxy), PChar(FProxyByPass), 0);代码前添加如下代码行://设置10分钟超时,10分钟一般够用了。
Timeout:=600000;   
InternetSetOption(nil,  INTERNET_OPTION_RECEIVE_TIMEOUT ,
    @Timeout, sizeof(Timeout));
4.重新编译项目,运行程序。以后webservice就不会受限于30秒超时报异常的问题了!