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

回到顶部