delphi – Indy – IdHttp如何处理页面重定向?
使用:Delphi 2010,Indy的最新版本
我试图从Googles Adsense网页上删除数据,目的是获取报告.但到目前为止我还没有成功.它在第一次请求后停止,但不继续. 使用Fiddler调试流向Google Adsense网站的流量/请求,以及用于加载Adsense页面的Web浏览器,我可以看到请求(来自webbrowser)会生成许多重定向,直到页面加载完毕. 但是,我的Delphi应用程序只在停止之前生成一些请求. 以下是我遵循的步骤: >在表单上删除IdHTTP和IdSSLIOHandlerSocketOpenSSL1组件. 最后我有这个代码: 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标题的输出:
首先,这个输出有什么问题吗? 还有什么我应该做的让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输出的(请求和响应头): (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |