本帖最后由 Code166 于 2009-06-26 13:25:29 编辑

解决方案 »

  1.   

    一样的问题解决问题150分
    http://topic.csdn.net/u/20090626/11/c9fead9b-1df4-42d4-bf0c-a641ea5b3f1e.html
    快点来人啊
      

  2.   

    <script type="text/javascript">
    //<![CDATA[
    var theForm = document.forms['frmLogin'];
    if (!theForm) {
        theForm = document.frmLogin;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    //]]>
    </script>
    <input type="submit" name="btnLogin" value="登  录" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;btnLogin&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="btnLogin" class="Button" style="margin-top: 8px" />                点击登录按钮的时候会检查一些东西,用idhttp应该是没办法实现,只能用webbrowser
      

  3.   

    不过我不可能用webbrowser要是这个早就实现了。公司的要求没办法
    const 
          url  ='http://www.2ccc.com/login.asp'; 
      var 
          param  :  TStringList; 
      begin 
          param  :=  TStringList.Create; 
          param.add('membername=username'); 
          param.add('memberpass=password'); 
          param.Add('act=1');       idhttp1.HandleRedirects  :=  true; 
          idhttp1.Request.Referer  :=  'http://www.2ccc.com'; 
              cxmemo1.text:=  idhttp1.post(url,param);
    这个方法还可以。等人结贴。
      

  4.   

    http://www.2ccc.com/login.asp
    这个用idhttp当然是没问题的了
      

  5.   

      data := TIdMultiPartFormDataStream.Create; 
      ResponseStream := TMemoryStream.Create;
      try
        IdHttp1.Request.ContentType := data.RequestContentType;
        data.AddFormField('tbUserName','username'); 
        data.AddFormField('tbPassword','******'); 
        data.PrepareStreamForDispatch;
        data.Position := 0;
        IdHTTP1.Post(edtHost.Text, data, ResponseStream);
      finally
        data.Free;
        ResponseStream.Free;
      end;
      

  6.   

    需要把表单里所有的Field都加上才行,像这样:
    data.AddFormField('__EVENTTARGET','');
    data.AddFormField('__VIEWSTATE','/wEPDwUJLTI5NjAzODk2ZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQULY2hrUmVtZW1iZXKHW0DW4nQrSrBHBomKrt3/MjtBLA==');
    data.AddFormField('__EVENTVALIDATION','/wEWBQKE2u7lCQLyj/OQAgK3jsrkBALR55GJDgKC3IeGDO8x1Jd0k/hBY1a/6Yl9fTpP16ti');
    data.AddFormField('tbUserName','');
    data.AddFormField('tbPassword','');
    data.AddFormField('chkRemember','');
    data.AddFormField('btnLogin','登 录');
      

  7.   

    1,使用 火狐浏览器2.0在工具-页面信息-表单- 获得所有表单信息
    2,按14楼mu_x 说的,把表单 字段名称和当前值 都写进去procedure TForm1.Button1Click(Sender: TObject);
    var
    postList: TStrings;
    Response: TStringStream;begin;
          Response := TStringStream.Create('');
          postList := TStringList.Create;
          try
              IdHTTP1.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon)';
               postList.Add('__EVENTTARGET=');
               postList.Add('__VIEWSTATE=/wEPDwUJLTI5NjAzODk2ZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQULY2hrUmVtZW1iZXKHW0DW4nQrSrBHBomKrt3/MjtBLA==');
               postList.Add('__EVENTVALIDATION=/wEWBQKE2u7lCQLyj/OQAgK3jsrkBALR55GJDgKC3IeGDO8x1Jd0k/hBY1a/6Yl9fTpP16ti');
               postList.Add('tbUserName=用户名称');
               postList.Add('tbPassword=用户密码');
               postList.Add('chkRemember=');
               postList.Add('btnLogin=登 录');
              IdHTTP1.Post('http://passport.cnblogs.com/login.aspx',postList,Response);
          finally
              Memo1.Lines.Text := Utf8ToAnsi(Response.DataString);
              Response.Free;
              postList.Free;
          end;end;
      

  8.   

    如果转向将 idhttp handleredirc设置为True下面是获得转向地址:
    procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: String;
      var NumRedirect: Integer; var Handled: Boolean;
      var VMethod: TIdHTTPMethod);
    var
    url : string;
    begin
        url := dest;
        Handled:=True;   
        showmessage(url);//转向地址
    end;
      

  9.   

    用抓包工具抓个包看看咯,是不是漏掉什么字段没有填充呢
    然后POSt上去应该没问题了就