web-services - Delphi soap (httprio) 忽略证书验证

标签 web-services delphi ssl soap

我有一个 https SOAP ,我想忽略证书验证。我在 THTTPRIO.HTTPWebNode 中通过 OnBeforePost 事件做到了这一点:

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;

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

有没有flag or snippet for set at runtime,自定义检索超时设置?

最佳答案

THTTPRIO.HTTPWebNode 具有:

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

都是以毫秒为单位。

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

关于web-services - Delphi soap (httprio) 忽略证书验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44256632/

相关文章:

django - 如何用SSL实现Nginx 'Service Unavailable'?

SSL 证书过期并更新后,iOS 应用无法在设备上运行

php - 刷新用于 IP 黑名单检查的 PHP 脚本

delphi - 刷新嵌套在 DataSetField 中的 ClientDataSet

database - 如何从 TDBAdvListView 中删除选定的数据库记录?

delphi - Delphi Win64 中的 Monkey 修补方法(函数)

azure - 如何从 Azure 中引用 SSL 证书

java - 从 http ://www. autorenlexikon.lu 接收 JSON 列表

java - 使用 oAuth 2.0 保护基于 Jersey 的 REST 服务

java - 设置默认的 SocketFactory