java使用httpclient簡單模擬登陸微信公眾開放平臺
阿新 • • 發佈:2019-01-09
package com.zhanghenglei.weixin;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.protocol.Protocol;
/**
* 模擬微信登入
*
* @author 小葉
*@date 2013-5-13
*/
public class Weixin {
static {
Protocol myhttps = new Protocol("https",
new MySecureProtocolSocketFactory(), 443);
Protocol.registerProtocol("https ", myhttps);
}
public static void main(String[] args) throws Exception{
System.setProperty ("jsse.enableSNIExtension", "false");
// 創造httpclient例項
HttpClient client = new HttpClient();
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); // 設定cookie管理策略
client.getParams().setParameter("http.protocol.single-cookie-header ",
true);
PostMethod post = new PostMethod();
//模擬瀏覽器
post.setRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 6.2; WOW64)" +
" AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 " +
"Safari/537.22");
//這個必須設定 否則無法登入 還是儘量完全模擬瀏覽器的行為
post.setRequestHeader("Referer", "https://mp.weixin.qq.com");
//登入請求提交地址
post.setURI(new URI("https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN"));
//構造請求引數
NameValuePair[] params = new NameValuePair[] {
new NameValuePair("username", "[email protected]"),
new NameValuePair("pwd", DigestUtils.md5Hex("****"
.getBytes())), new NameValuePair("f", "json"),
new NameValuePair("imagecode", "") };
post.setQueryString(params);
int aa = client.executeMethod(post);
System.out.println(aa);
System.out.println(post.getResponseBodyAsString());
/*
//接著發一個get請求來確認是否登入成功。 因為我的微信還沒有驗證,所有進入的是acct/realnamepage?action=showsubmit&step=3&lang=zh_CN頁面
GetMethod get = new GetMethod();
get.setURI(new URI("https://mp.weixin.qq.com/acct/realnamepage?action=showsubmit&step=3&lang=zh_CN"));
client.executeMethod(get);
System.out.println(get.getResponseBodyAsString());*/
}
}