1.拖入TIdHTTP控件,HandleRedirect设为True,否则可能会出现HTTP 307错误。
2.主要的设置在Request里。
2.1 userAgent应该改为Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; CIBA; MAXTHON 2.0)
2.2 如果Accept-Encoding设为了gzip, deflate,那么需要再解码,所以如果没有必要的话Accept-Encoding应该设为空。
2.3 Referer应该设为post之前那个页面.
3.若需要取得cookie。
3.1 拖入TidCookieManager控件,将IdHTTP的CookieManager指向它,设定AllowCookies为True
3.2 设置全局变量mycookie:string;
3.3 在TidCookieManager的OnNewCookie事件中
mycookie:=ACookie.ClientCookie;
3.4 然后在用TIdHTTP控件Get页面后即可获取cookie
idhtp1.Get('http://www.XXX.com/');
cookies:='Cookie:'+mycookie;
idhtp1.Request.CustomHeaders.Text:=cookies;
4.设置HTTPOptions的hoForceEncodeParams为False,否则post的数据可能会以%20形式编码。
5.若要使用HTTP/1.1,可将HTTPOptions的hoKeepOrigProtocol设为True,然后将ProtocolVersion设为pv1_1。
要保持你登录时候的Session ,所以你两次登陆要用同一个CookieManager:
IDHttp1.CookieManager := IdCookieManager1; IDHttp2.CookieManager := IDCookieManager2; IDHttp1...//执行登录 IDHttp2...//登录后新窗口。 |
本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/lxdcyh/archive/2009/03/13/3986800.aspx
IDCookieManager只是获取HTTP的COOKIE 在IDHTTP里关联一下就可以了. 百度找下IDHTTP的idcookieManager的用法就行 一般我获取COOKIE,没用过这个组件. 都是使用idhttp.response.rawheaders.text; 然后自己截取COOKIE