首页 > 解决方案 > WinHTTP - 与服务器的连接异常终止

问题描述

我导入 WinHTTP 并尝试在 https url 中执行请求,如下所示:

function TForm1.GetPage(AURL: String): String; 
var 
  WinHttpRequest: IWinHTTPRequest; 
begin 
  CoInitialize(nil); 
  try 
    WinHttpRequest := CoWinHttpRequest.Create; 
    WinHttpRequest.Open('GET', AURL, False); 
    WinHttpRequest.Send(EmptyParam); 
    Result := WinHttpRequest.ResponseText; 
  finally 
    WinHTTPRequest := nil; 
    CoUninitialize; 
  end; 
end;

它适用于相同的页面(例如:https ://www.google.com ),但不适用于其他页面(例如: https ://sourceforge.net ),并出现错误“与服务器的连接异常终止”。

有没有我忘记的其他设置?

我正在使用德尔福 2010。

标签: delphi-2010winhttp

解决方案


大多数服务器已不再接受 SSL 传入流量,转而采用 TLS 协议。Windows 7 和 8 没有定义 TLS 协议,因此 VBA 使用 SSL 发送流量,然后被此类服务器阻止/丢弃。

您将需要应用两步补丁/更新来修复 Windows 7 的此问题,

步骤 1. 获取 Microsoft 更新: 下载相关(用户的 Windows 版本的 32 位或 64 位) Microsoft 安全协议更新并安装(如果尚未安装)。

步骤 2. 下载 Microsoft Easy Fix:从Microsoft Support Article 下载 Microsoft “Easy Fix” ,然后执行以将 TLS 1.1+ 设置为默认值。

来源:更新以启用 TLS 1.1 和 TLS 1.2 作为 Windows 中 WinHTTP 中的默认安全协议


推荐阅读