WinInet InternetCloseHandle不关闭连接[重复]

问题描述 投票:1回答:1

我使用此代码从URL获取一些数据:

function GetUrlContent(const Url: string): string;
var
  NetHandle: HINTERNET;
  UrlHandle: HINTERNET;
  Buffer: array[0..1024] of AnsiChar;
  BytesRead: DWORD;
  Size: Integer;
begin
  Result := '';
  NetHandle := InternetOpen('App', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if not Assigned(NetHandle) then Exit;
  try
    UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
    if not Assigned(UrlHandle) then  Exit;
    try
      { Proceed with download }
      Size := 0;
      repeat
        if not InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead) then Break;
        if BytesRead = 0 then Break;
        SetLength(Result, Size + BytesRead);
        Move(Buffer, Result[Size + 1], BytesRead);
        Inc(Size, BytesRead);
      until False;
    finally
      InternetCloseHandle(UrlHandle);
    end;
  finally
    InternetCloseHandle(NetHandle);
  end;
end;

问题是,在我获取数据之后,似乎仍然建立了连接,就像InternetCloseHandle()崩溃或有缺陷一样。

我想在返回结果后关闭函数的活动连接。

delphi wininet
1个回答
0
投票

谢谢你解决了所有问题

InternetCloseHandle(hInternet);
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);

我非常感谢你的回答 WinAPI: InternetCloseHandle function closes the handle but not the connection

© www.soinside.com 2019 - 2024. All rights reserved.