我可以使用以下代码轻松地从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;
答案 0 :(得分:2)
你可以使用这样的东西
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;
答案 1 :(得分:0)
您可以使用WINHTTP_CALLBACK_FLAG_REDIRECT参数设置WinHttpSetStatusCallback来接收有关请求期间发生的每个重定向的通知。