Delphi 使用 TNetHTTPClient:如何在重定向后给出最终的 url?

Delphi using TNetHTTPClient: how to give the final url after redirections?

我在 Delphi 10.3.1 中使用带有 GET 命令的 TNetHTTPClient,我需要在页面重定向后获得最终的 URL。 是否有任何 属性 或功能? 谢谢

似乎无法直接(public)访问与响应关联的请求实例。一个 hacky 解决方案依赖于:

  1. IHTTPResponse 返回由 THTTPResponse 实现(实现细节)
  2. 保护对 THTTPResponse
  3. FRequest 字段的访问

然后您可以使用以下代码访问请求实例:

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/