Delphi-如何设置SoapClient超时?

Delphi-如何设置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

我在发帖前做这件事:

FTimeout:=30000

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),如我的示例中所示。