我用httpclient做登陆网站的工作,用postMethod,有的网站很顺利,
但 www.zhaopin.com 却登不上去,返回200状态码。成功的网站返回的是302状态码。“http://my.zhaopin.com/loginmgr/loginproc.asp”,
    {'loginname' : '[email protected]', 'password' : 'MyPass'}
  参数应该没错。如果说登陆成功了,为什么跟用户有关的页面得到的源代码都不对呢?形如 <head><title>Object moved</title></head>
<body><h1>Object Moved</h1>This object may be found <a HREF="/loginmgr/login.asp?BkUrl=%2Fmyzhaopin%2Fresume%5Fpublish%2Easp%3Fext%5Fid%3DJR110119R70%26resume%5Fid%3D110119%26Version%5FNumber%3D1%26language%5Fid%3D1">here</a>.</body>please!!! 

解决方案 »

  1.   

    你去看看协议和返回码的信息吧。呵呵呵!moved 是很正常的做法。
      

  2.   

    你用的HttpClient去模拟登陆对吧,在你的
    PostMethod post=new PostMethod("登陆页面提交的那个action的url");//这个url千万不要写成了登陆页面的url,而是它提交表单里面得form里的那个action的urlNameValuePair data[]=NameValuePair []data={....};
    post.setRequestHeader("Accept", "", */*");
    post.setRequestHeader("Accept-Encoding", "");
    post.setRequestHeader("Accept-Language", "");
    post.setRequestHeader("Cache-Control", "");
    post.setRequestHeader("Connection", "");
    post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    post.setRequestHeader("Cookie", "");
    post.setRequestHeader("Host", "");
    post.setRequestHeader("Referer", "");
    post.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; CIBA)");
    post.setRequestBody(data); 在post中要添加 header的头信息,int StateCode=httpClient.executeMethod(post);//返回302说明页面要转向