delphi idhttp与cookie


本文整理自网络,侵删。

 
用关键词“idhttp cookie”在各大搜索引擎得到的结果,大多千篇一律,如果你搜索到这一篇,恭喜你,你有福了。

  以下内容测试环境:delphi2007,  winxp sp3, indy10。

  一、idhttp的自动维护cookie功能。

  idhttp的AllowCookies属性默认是true,意思是自动维护cookie,所以,打算用idhttp登陆网站、发贴等操作,只需要设置此属性为true就行了。

   二、提交自定义cookie。

  如其它帖子所说,设置idhttp的cookie有多种说法,经我测试,以下两条有用:

  1:http1.Request.CustomHeaders.Values['Cookie']:='fdsa';

  2:http1.Request.CustomHeaders.text:='Cookie: fdsa';

  一般情况下,使用第一条最佳。

  需要注意的是:我们在提交一些表单之前,要先获取表单所在页面,取得一些表单数据,整理数据后,再post到服务器。若这两个步骤使用同一个idhttp,且AllowCookies为True,此时将不能修改cookie,

(不能删除和修改,可以增加一行cookie,如:

  已有cookie为“Cookie: user=aaa; pwd=bbb”,在程序中使用http1.Request.CustomHeaders.Values['Cookie']:='fdsa'或者http1.Request.CustomHeaders.text:='Cookie: fdsa';都不会生效,而:http1.Request.CustomHeaders.Add('Cookie: fdsa')会发生如下情况(抓包可知):

 Cookie: user=aaa; pwd=bbb

 Cookie: fdsa

 这样,实际是自定义的COOKIE是没有生效的。 


  若使用不同的idhttp,则需要手动维护cookie,最简单的维护方法如下:

procedure MyWorkEnd(Sender:TObject; AWorkMode:TWorkMode);

var

  tmp,cookie:string;

  i:integer;

begin

  cookie := '';

  for i := 0 to http.Response.RawHeaders.Count - 1 do

  begin

       tmp := http.Response.RawHeaders[i];

      if pos('set-cookie: ', LowerCase(tmp)) = 0 then Continue;

    tmp := Trim(Copy(tmp, Pos('Set-cookie: ', tmp) + Length('Set-cookie: '), Length(tmp)));

    tmp := Trim(Copy(tmp, 0, Pos(';', tmp) - 1));

      if cookie = '' then cookie := tmp else cookie := cookie + '; ' + tmp;

  end;

  if cookie <> '' then

  begin

     http.Request.CustomHeaders.Values['Cookie']:=cookie;

  end;

end;

  请注意区分多个idhttp。

  若在同一idhttp,且AllowCookies为False,只需要用

  1:http1.Request.CustomHeaders.Values['Cookie']:='fdsa';

  2:http1.Request.CustomHeaders.text:='Cookie: fdsa';

总结,一般情况下是不用提交自定cookie的,需要的时候,把allowCookies设置为false(重点)。

相关阅读 >>

Delphi tcomport控件从串品读取数据

Delphi 删除或清除tstringgrid中的行

Delphi 键盘记录源代码

Delphi制作透明窗体

Delphi xe6 android拨号函数

Delphi 根据进程名得到进程所在路径

Delphi保存读取utf-8的文本文件

Delphi百度网盘真实地址解析

Delphi 的字符串在 firemonkey 模式下

Delphi 将image组件的图片保存为jpg格式图片方法

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...