1. 程式人生 > >java使用httpclient簡單模擬登陸微信公眾開放平臺

java使用httpclient簡單模擬登陸微信公眾開放平臺

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());*/ } }