最近在写一个小工具,主要实现的就是:使用程序登录到一个网站,然后利用idhttp控件的post功能,提交参数,从返回的网页代码中分析过滤得到自己的数据。当然此过程会循环。
  由于操作的网站需要填写验证码,原以为可以在程序中使用WebBrowser,手动登录上去,然后使用idhttp的post功能,但尝试了下,也查了下资料,发现不可以。原因是就算WebBrowser手动连上去后,使用idhttp去提交时,仍然是默认没有登录的状态,因为cookie不一样。
  哪位大侠帮忙给个思路,最好是详细点的,帮助小弟一下,感激不尽啊。

解决方案 »

  1.   

    WebBrowser一样有提交的功能呀.............................
    var
    o : Olevariant;
    o := WebBrowser1.OleObject.document.all.item('User_Id',0);   //找到登录用户名的输入框
    //o.value := '0096';
    o.value :=id;
    o := WebBrowser1.oleobject.document.all.item('password',0); //找到登录密码的输入框
    //o.value := '0096';
    o.value :=password;
    //WebBrowser1.oleobject.document.Forms.Item('btn_Sure', 0).submit;          //第一个表单提交
    //{
    o := WebBrowser1.oleobject.document.all.item('btn_Sure',0);          //或者用指定表单名称提交
    o.Click;
      

  2.   

    验证码可以单独取的,不要用WEBBROWSER,你可以看一下验证码的图片来源
      

  3.   

    相同的问题  网上说赋值cookies就可以 但是 试了下还是不行sWEBCooKies :=(ShopWebLoginFrm.wbLogin.document as IHTMLDocument2).cookie;
    idHttp.Request.CustomHeaders.Text := sWEBCooKies;
      

  4.   

    如何只为了验证码就用 WebService 的话,那是没必要的。
    只接把验证图片用 idHttp 取回来。显示在一个 Image 里不就成了吗?看样子,你还需要在 idHttp 上再挂个 IdCookieManager . 这样就可以不关心 Cookie 了。