`
bao231
  • 浏览: 85733 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

httpclient 163邮箱登陆

阅读更多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;

public class NewTest {

/**
* @param args
* @throws IOException
* @throws HttpException
*/
public static void main(String[] args) throws Exception {
HttpClient client = new HttpClient();
///////////////////////////////第一次登陆/////////////////////////////
List<NameValuePair> data = new ArrayList<NameValuePair>();
data.add(new NameValuePair("verifycookie", "0"));
data.add(new NameValuePair("product", "mail163"));
data.add(new NameValuePair("username", "zhangbaoxin231@163.com"));
data.add(new NameValuePair("password", "3266472"));
PostMethod httpPost = new PostMethod(

"http://reg.163.com/login.jsp?type=1&url=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D-1");
httpPost.setRequestBody(data
.toArray(new NameValuePair[data.size()]));
// httpPost.getParams().setParameter("http.protocol.cookie-policy",CookiePolicy.BROWSER_COMPATIBILITY);
httpPost.setFollowRedirects(false);
client.executeMethod(httpPost);
BufferedReader in=new BufferedReader(new InputStreamReader(httpPost.getResponseBodyAsStream(),"UTF-8"));
StringBuffer buffer=new StringBuffer();
String line;
while ((line = in.readLine()) != null) {
buffer.append(line);
}
StringBuffer bu1 = new StringBuffer();
for(Cookie c : client.getState().getCookies())
{
bu1.append(c.getName());
bu1.append("=");
bu1.append(c.getValue());
bu1.append("\n");
}
System.err.println(bu1.toString());
httpPost.releaseConnection();

int a = buffer.indexOf("window.location.replace(\"");
int b = buffer.indexOf("\"",a+25);
System.err.println(buffer.toString().substring(a+25,b));

////////////////////////////////////////////////////////////

PostMethod httpPost1 = new PostMethod(buffer.toString().substring(a+25,b));
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

  //一定要有,否则会生成多个Cookie header送给web server
client.getParams().setParameter("http.protocol.single-cookie-header",true);
client.getParams().setParameter("http.protocol.content-charset","gb2312");
client.executeMethod(httpPost1);

StringBuffer bu2 = new StringBuffer();
for(Cookie c : client.getState().getCookies())
{
bu2.append(c.getName());
bu2.append("=");
bu2.append(c.getValue());
bu2.append("\n");
}
System.err.println(bu2.toString());
BufferedReader in2=new BufferedReader(new InputStreamReader(httpPost1.getResponseBodyAsStream()));
StringBuffer buffer2=new StringBuffer();
String line2;
while ((line2 = in2.readLine()) != null) {
buffer2.append(line2);
}
System.out.println(buffer2.toString().trim());
String content = httpPost1.getResponseHeader("Location").getValue();
String sessId = null;
sessId = content.substring(content.indexOf("sid=")+4);
System.err.println(httpPost1.getResponseHeader("Location").getValue());
String trueUrlString = content.substring(0,content.indexOf("."))+ ".mail.163.com/js3/s?sid="+ sessId+"&func=global:sequential";
    System.err.println(trueUrlString);
   
    /////////////////////////////////////////////////////////
   
       PostMethod pm1 = new PostMethod(trueUrlString);

pm1.setRequestEntity(new StringRequestEntity("<?xml version=\"1.0\"?><object><array name=\"items\"><object><string name=\"func\">pab:searchContacts</string><object name=\"var\"><array name=\"order\"><object><string name=\"field\">FN</string><boolean name=\"ignoreCase\">true</boolean></object></array></object></object><object><string name=\"func\">user:getSignatures</string></object><object><string name=\"func\">pab:getAllGroups</string></object></array></object>","application/xml","UTF-8"));
//pm1.getParams().setParameter("http.protocol.cookie-policy",CookiePolicy.BROWSER_COMPATIBILITY);
// pm1.setRequestHeader("Cookie", cookies.toString());   
client.executeMethod(pm1);

BufferedReader in1=new BufferedReader(new InputStreamReader(pm1.getResponseBodyAsStream()));
StringBuffer buffer1=new StringBuffer();
String line1;
while ((line1 = in1.readLine()) != null) {
buffer1.append(line1);
}
StringBuffer bu = new StringBuffer();
for(Cookie c : client.getState().getCookies())
{
bu.append(c.getName());
bu.append("=");
bu.append(c.getValue());
bu.append("\n");
}
System.err.println(bu.toString());
System.err.println("66"+buffer1.toString());










}

}
分享到:
评论
3 楼 qxpidt 2014-07-02  
我运行了下,没有获取到163邮箱的主页内容,
2 楼 qxpidt 2014-07-02  
你登录成功后,能成功获取到主页的文本吗?
1 楼 qxpidt 2014-07-02  
楼主,你这个程序,你测试过了吗?

相关推荐

Global site tag (gtag.js) - Google Analytics