Delphi SOAP超时?
我偶尔会遇到SOAP超时问题,我相信这是造成问题的连接超时。 30秒后,我总是得到一个时间。谷歌搜索,我发现建议InternetSetOption可以用来设置超时,但是我的机器上,我有SOAPHttpTrans.pas(CodeGear的Delphi 7中),其中有下面的代码:Delphi SOAP超时?
Request := HttpOpenRequest(FInetConnect, 'POST', PChar(FURLSite), nil, nil, nil, Flags, 0{Integer(Self)});
Check(not Assigned(Request));
{ Timeouts }
if FConnectTimeout > 0 then
Check(not InternetSetOption(Request, INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@FConnectTimeout), SizeOf(FConnectTimeout)));
if FSendTimeout > 0 then
Check(not InternetSetOption(Request, INTERNET_OPTION_SEND_TIMEOUT, Pointer(@FSendTimeout), SizeOf(FSendTimeout)));
if FReceiveTimeout > 0 then
Check(not InternetSetOption(Request, INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@FReceiveTimeout), SizeOf(FReceiveTimeout)));
如何设置连接超时?
JD
回答:
什么,我必须做的就是使用OnBeforePost中的处理程序来设置超时:
transport.OnBeforePost := configureHttpRequest; procedure Tsomething.configureHttpRequest(const HTTPReqResp: THTTPReqResp; Data: Pointer);
begin
InternetSetOption(Data, INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@FconnectTimeoutMS), SizeOf(FconnectTimeoutMS));
InternetSetOption(Data, INTERNET_OPTION_SEND_TIMEOUT, Pointer(@FsendTimeoutMS), SizeOf(FsendTimeoutMS));
InternetSetOption(Data, INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@FreceiveTimeoutMS), SizeOf(FreceiveTimeoutMS));
end;
这些选项的MSDN文档在http://msdn.microsoft.com/en-us/library/aa385328%28VS.85%29.aspx
回答:
IIRC,InternetSetOption不与IE6的wininet.dll工作。如果是你的情况,请尝试升级到IE7或更高版本。
以上是 Delphi SOAP超时? 的全部内容, 来源链接: utcz.com/qa/260659.html