IDHTPP是个好东西 现在我写的网络程序都用它
使用COOKIEMANAGER可以获取COOKIE后 保存在MEMO中 再赋值到IDHTTP上但是当跳转多个网页 或是 操作步骤过多的时 (多个POST GET 每次操作都会有新COOKIE信息)
那个COOKIE处理就感觉非常麻烦了
如果每次POST GET以后都清空Memo_Cookie来保存新的 那以前的COOKIE信息会丢失一点
如果不清空 都往Memo_Cookie里边添加COOKIE 那里边会有很多重复和冲突的COOKIE信息
如果自己处理COOKIE再往Memo_Cookie里边添加感觉又麻烦又有心无力
因为COOKIE信息很多 每次GET POST的COOKIE不同 网站不同又不同
请问大家有什么好办法能解决这个问题么? 谢谢
      with IdHTTP do
      begin
        // IdHTTP 设置
        HTTPOptions := HTTPOptions + [hoKeepOrigProtocol];   //PV1_1
        ProtocolVersion := pv1_1;
        HTTPOptions := HTTPOptions - [hoForceEncodeParams];  //去掉自动编码
        AllowCookies := True;
        CookieManager := IdCookieManager1;
        HandleRedirects := True;
        // IdHTTP 提交信息的设置
        Request.Accept := '*/*';
        Request.Connection :='Keep-Alive';
        Request.AcceptLanguage := 'zh-cn';
        Request.ContentType := 'application/x-www-form-urlencoded';
        Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)';
        Request.Referer := ComboBox_RefererURL.Text;
        Request.CustomHeaders.Text := 'Cookie: '+ Memo_Cookie.Lines.Text;          SS := TStringStream.Create('', TEncoding.UTF8);
        end;
        try
          Post(Trim(ComboBox_PostURL.Text), Memo_Post.Lines, SS);  // ---- POST数据
          Memo_BackInfo.Lines.Text := ResponseText + #13#10+ Response.RawHeaders.Text;
          Memo_BackData.Lines.Text := SS.DataString;
        finally
          FreeAndNil(SS);
        end;
//-------- IdCookieManager 添加COOKIE
procedure TForm1.IdCookieManager1NewCookie(ASender: TObject;
  ACookie: TIdCookieRFC2109; var VAccept: Boolean);
begin
  Memo_Cookie.Lines.Add(ACookie.ClientCookie);
end;

解决方案 »

  1.   

    不懂,想问下如果采用session方式是不是更容易控制?
      

  2.   

    InternetSetCookie保存cookie,相同的会覆盖,冲突的就麻烦点,得自己处理下。
    InternetGetCookie根据url获取cookie,可以区分不同网站的cookie。
    这个应该没你那样处理麻烦。
      

  3.   

    大家都是怎么处理多页面时的COOKIE的?
      

  4.   

    Cookie好像有一个“域”的概念,可以区分不同网站或者不同网页的cookie,具体的不懂,IDHTPP没用过,不是说bug很多吗……
      

  5.   

    多页面处理就用session,但是session是服务器上的东西
      

  6.   

    IdCookieManager是一个独立的控件,可以绑给IdHttp用,这样实现了多请求下的Cookie统一管理
      

  7.   

    已经在使用COOKIEManager了
    由它获取的COOKIE 保存到某个变量中
    在多次POST GET以后
    里边的保存的COOKIE信息会重复和冲突
    就是想知道正规作法是怎么处理的?IDHTTP用了很久 简单易学 用起来也能满足我的需要
      

  8.   

    就没有用IDHTTP的高手分享一下经验么..