Delphi-如何设置SoapClient超时?
我在发帖前做这件事: FTimeout:=30000Delphi-如何设置SoapClient超时?,delphi,soap,timeout,Delphi,Soap,Timeout,我在发帖前做这件事: FTimeout:=30000 InternetSetOption(Pointer(@Data), INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@FTimeOut), SizeOf(FTimeOut)); InternetSetOption(Pointer(@Data), INTERNET_OPTION_SEND_TIMEOUT, Pointer(@FTimeOut), SizeOf(FTimeOut)); InternetSetOpt
InternetSetOption(Pointer(@Data), INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@FTimeOut), SizeOf(FTimeOut));
InternetSetOption(Pointer(@Data), INTERNET_OPTION_SEND_TIMEOUT, Pointer(@FTimeOut), SizeOf(FTimeOut));
InternetSetOption(Pointer(@Data), INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@FTimeOut), SizeOf(FTimeOut));
但这不管用
有人能帮忙吗?那应该行得通。你没有说从哪里调用它,但我在OnBeforePost处理程序中调用了我的 我的函数如下所示:
function SetTimeout(const HTTPReqResp: THTTPReqResp; Data: Pointer; NumSecs : integer) : boolean;
var
TimeOut: Integer;
begin
// Sets the receive timeout. i.e. how long to wait to 'receive' the response
TimeOut := (NumSecs * 1000);
try
InternetSetOption(Data, INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@TimeOut), SizeOf(TimeOut));
InternetSetOption(Data, INTERNET_OPTION_SEND_TIMEOUT, Pointer(@TimeOut), SizeOf(TimeOut));
except on E:Exception do
raise Exception.Create(Format('Unhandled Exception:[%s] while setting timeout to [%d] - ',[E.ClassName, TimeOut, e.Message]));
end;
end;
也许你的工作,你没有足够的时间去看?一个容易犯的错误是假设是秒,当它是MS时。我使用SoapUI时会有一个响应延迟,因此我可以“肯定”知道这是有效的。还可以检查返回值。调用GetLastError查看internetSetOption可能设置的错误代码。错误\u无效\u句柄6(0x6)句柄无效。因此我认为您的代码放错了位置。你从哪里打过来的?这应该是RIO的OnBeforePost方法。另外,尝试用数据替换指针(@Data),如我的示例中所示。