在 Delphi 中使用 WinHTTP 重定向后有没有办法获取最终 URL?

2024-02-06

我可以使用下面的代码轻松地从 URL 获取 HTML 源代码,但是如何获取实际的 URL 本身呢?因为有时初始 URL 会经历一些重定向,而实际 URL 并不相同,我想捕获它以供使用。我似乎找不到任何关于 Delphi 中 winHTTP 的方法或属性的使用的好的文档。谢谢!

var http: variant;
begin
 http:=createoleobject('WinHttp.WinHttpRequest.5.1');
 http.open('GET', 'http://URLtoWebsite.com', false);
 http.send;
 showmessage(http.responsetext);
end;

你可以使用这样的东西

function GetFinalURL(const AMainURL: string): string;
var
  http: Variant;
begin
  Result := '';
  http := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  http.Option(6) := False;
  http.open('GET', AMainURL, false);
  http.send;
  if http.Status = 302 then
    Result := http.getResponseHeader('Location')
  else
  Result := AMainURL;
end;

另一种方式使用Indy

function GetFinalURL(const AMainURL: string): string;
var
  idHTTP: TIdHTTP;
begin
  Result := '';
  idHTTP := TIdHTTP.Create(nil);
  try
    idHTTP.HandleRedirects := True;
    try
      idHTTP.Get(AMainURL);
      Result := idHTTP.Request.URL;
    except
    end;
  finally
    idHTTP.Free;
  end;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Delphi 中使用 WinHTTP 重定向后有没有办法获取最终 URL? 的相关文章

随机推荐