Delphi с использованием TNetHTTPClient: как дать окончательный URL после перенаправления? - PullRequest
0 голосов
/ 28 мая 2019

Я использую в Delphi 10.3.1 TNetHTTPClient с командой GET, и мне нужно получить окончательный URL-адрес после перенаправления страниц. Есть ли свойство или функция для этого? Thx.

1 Ответ

2 голосов
/ 28 мая 2019

Кажется, что нет прямого (публичного) доступа к экземпляру запроса, связанному с ответом.Хакерское решение опирается на:

  1. IHTTPResponse возвращаемое реализовано THTTPResponse (подробности реализации)
  2. защищенный доступ к FRequest полю THTTPResponse

Затем вы можете использовать следующий код для доступа к экземпляру запроса:

type
  THTTPResponseAccess = class(THTTPResponse);

procedure TForm2.Button1Click(Sender: TObject);
var
  Response: THTTPResponse;
  Request: IURLRequest;
begin
  Response := NetHTTPClient1.Get('http://google.com') as THTTPResponse;
  Request := THTTPResponseAccess(Response).FRequest;
  ShowMessage(Request.URL.ToString);
end;

Вывод:

http://www.google.com/
...