THttpClient没有在Delphi

时间:2018-01-18 12:21:40

标签: delphi tcp delphi-10.2-tokyo sysinternals

我的软件包含以下功能,用于发布到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 个答案:

答案 0 :(得分:4)

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

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

但是在Delphi THttpClient中设置此选项没有简单的方法,为此,您必须将System.Net.HttpClient.Win.pasSystem.Net.HttpClient.pas复制到项目中并修改{{1}添加此代码

答案 1 :(得分:2)

关于以下内容

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