• 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(重点)。

  • 相关阅读:
    Java守护线程Daemon
    在for循环中创建双向链表
    Java泛型-官方教程
    大自然搬运工
    转 curl命令
    HashMap扩容问题及了解散列均分
    mysql 分组查询并取出各个分组中时间最新的数据
    CNN 模型复杂度分析
    Attention机制
    深度学习之目标检测
  • 原文地址:https://www.cnblogs.com/bwdblogs/p/10495728.html
Copyright © 2020-2023  润新知