司有个老业务系统,用的是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秒超时报异常的问题了! |
|