Delphi soap(httprio)忽略证书验证

时间:2017-05-30 07:56:36

标签: web-services delphi ssl soap

我有一个https肥皂,我想忽略证书验证。我已将OnBeforePost事件发送到THTTPRIO.HTTPWebNode

procedure TMySOAP.OnBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);
var
  aFlagsSize: DWord;
  aFlags:     DWord;
begin
  aFlagsSize := SizeOf(aFlags);

  // get security flags
  if InternetQueryOption(Data, INTERNET_OPTION_SECURITY_FLAGS, @aFlags, aFlagsSize) then
  begin
      // add all flag for ignore validation
      aFlags := aFlags or
       SECURITY_FLAG_IGNORE_UNKNOWN_CA or
       SECURITY_FLAG_IGNORE_REVOCATION or
       SECURITY_FLAG_IGNORE_CERT_CN_INVALID or
       SECURITY_FLAG_IGNORE_CERT_DATE_INVALID or
       SECURITY_FLAG_IGNORE_WRONG_USAGE;

      // set the new flags
      InternetSetOption(Data, INTERNET_OPTION_SECURITY_FLAGS, @aFlags, aFlagsSize)
  end;
end;

它有效..但我有第二个问题。我的客户在没有互联网的公司防火墙后面,每次请求肥皂都会丢失15秒,因为Windows尝试通过互联网验证证书路径,此操作的默认超时时间为15秒(参见https://technet.microsoft.com/en-us/library/cc771429(v=ws.11).aspx)。

在运行时设置了任何标志或片段,自定义检索超时设置?

1 个答案:

答案 0 :(得分:0)

THTTPRIO.HTTPWebNode 有:

property  ConnectTimeout: Integer;
property  SendTimeout: Integer; 
property  ReceiveTimeout: Integer;

所有这些都是以毫秒为单位。

RIO := THTTPRIO.Create(nil);
RIO.HTTPWebNode.ReceiveTimeout := 20000; //Wait just 20 secs