代码之家  ›  专栏  ›  技术社区  ›  Xel Naga

THttpClient未关闭Delphi中的连接

  •  2
  • Xel Naga  · 技术社区  · 7 年前

    我的软件包括以下用于发布到URL的功能。我正在使用Sysinternals TCPView查看连接。发布到URL后,连接未关闭。如何更改立即连接关闭的代码?

    function PostURL(const AURL: string; Parameters: TStrings): string;
    var
      HttpClient: THttpClient;
      HttpResponse: IHttpResponse;
    begin
      HttpClient := THTTPClient.Create;
      try
        HttpClient.ConnectionTimeout:=3000;
        HttpClient.ResponseTimeout:=3000;
        HttpResponse := HttpClient.Post(AURL, Parameters, nil, TEncoding.UTF8);
        Result := HttpResponse.ContentAsString();
      finally
        HttpClient.Free;
      end;
    end;
    
    2 回复  |  直到 7 年前
        1
  •  5
  •   EugeneK    7 年前

    这是WinHttp的一项功能,它使TCP连接保持活动状态一段时间,以便更快地重用它们,您可以通过在请求中禁用此选项来禁用它。

    OptionValue := WINHTTP_DISABLE_KEEP_ALIVE;
    WinHttpSetOption(RequestHandle, WINHTTP_OPTION_DISABLE_FEATURE, @OptionValue, sizeof(OptionValue));
    

    但是在Delphi中没有简单的方法来设置此选项 THttpClient ,您必须复制 System.Net.HttpClient.Win.pas System.Net.HttpClient.pas 到您的项目并修改 系统网HttpClient。赢pas公司 添加此代码

        2
  •  2
  •   Justin    5 年前

    以下内容如何

     HttpClient.SetRequestHeader('Connection', 'close');