我偶爾會遇到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
發現可以被複制的http://計算器.com/questions/2654122/soap-delphi-client-end-with-a-timeout-for-a-1mb-call – SimaWB 2010-10-12 09:48:34
在我的代碼中,我設置了RIO.HTTPWebNode.ConnectTimeout:= 300000; // 5分鐘; RIO.HTTPWebNode.SendTimeout:= 300000; RIO.HTTPWebNode.ReceiveTimeout:= 1200000; // 20分鐘我相信這是connecttimeout沒有被應用。 – 2010-10-12 09:57:28
您是否調試過這些行以查看InternetSetOptions是否實際使用正確的超時值調用?使用InternetQueryOption後,您是否驗證了實際的超時值? – 2010-10-12 10:58:22