delphi – Indy – IdHttp如何处理页面重定向?

前端之家收集整理的这篇文章主要介绍了delphi – Indy – IdHttp如何处理页面重定向?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用:Delphi 2010,Indy的最新版本

我试图从Googles Adsense网页上删除数据,目的是获取报告.但到目前为止我还没有成功.它在第一次请求后停止,但不继续.

使用Fiddler调试流向Google Adsense网站的流量/请求,以及用于加载Adsense页面的Web浏览器,我可以看到请求(来自webbrowser)会生成许多重定向,直到页面加载完毕.

但是,我的Delphi应用程序只在停止之前生成一些请求.

以下是我遵循的步骤:

>在表单上删除IdHTTP和IdSSLIOHandlerSocketOpenSSL1组件.
>将IdHTTP组件属性AllowCookies和HandleRedirects设置为True,将IOHandler属性设置为IdSSLIOHandlerSocketOpenSSL1.
>设置IdSSLIOHandlerSocketOpenSSL1组件属性方法:=’sslvSSLv23′

最后我有这个代码

procedure TfmMain.GetUrlToFile(AURL,AFile : String);
var
 Output : TMemoryStream;
begin
  Output := TMemoryStream.Create;
  try
    IdHTTP1.Get(FURL,Output);
    Output.SaveToFile(AFile);
  finally
    Output.Free;
  end;
end;

但是,它没有按预期进入登录页面.我希望它表现得好像它是一个webbrowser并继续重定向,直到找到最后一页.

这是Fiddler标题输出

06001

首先,这个输出有什么问题吗?

还有什么我应该做的让IdHTTP组件继续追求重定向直到最后一页?

解决方法

调用之前的IdHTTP组件属性值:
Name := 'IdHTTP1';
    IOHandler := IdSSLIOHandlerSocketOpenSSL1;
    AllowCookies := True;
    HandleRedirects := True;
    RedirectMaximum := 35;
    Request.UserAgent := 
      'Mozilla/5.0 (Windows NT 5.1; rv:2.0b8) Gecko/20100101 Firefox/4.' +
      '0b8';
    HTTPOptions := [hoForceEncodeParams];
    OnRedirect := IdHTTP1Redirect;
    CookieManager := IdCookieManager1;

重定向事件处理程序:

procedure TfmMain.IdHTTP1Redirect(Sender: TObject; var dest: string; var
    NumRedirect: Integer; var Handled: Boolean; var VMethod: string);
begin
   Handled := True;
end;

拨打电话:

FURL := 'https://www.google.com';

  GetUrlToFile( (FURL + '/adsense/'),'a.html');




  procedure TfmMain.GetUrlToFile(AURL,AFile : String);
  var
   Output : TMemoryStream;
  begin
    Output := TMemoryStream.Create;
    try
      try
       IdHTTP1.Get(AURL,Output);
       IdHTTP1.Disconnect;
      except

      end;
      Output.SaveToFile(AFile);
    finally
      Output.Free;
    end;
  end;

这是Fiddler输出的(请求和响应头):

猜你在找的Delphi相关文章