package com.kin.weixin;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;
import org.apache.commons.httpclient.methods.multipart.StringPart;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.alibaba.fastjson.JSON;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Weixin {
private final static Log log = LogFactory.getLog(Weixin.class);
public final static String HOST = "http://mp.weixin.qq.com";
public final static String LOGIN_URL = "http://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN";
public final static String INDEX_URL = "http://mp.weixin.qq.com/cgi-bin/indexpage?t=wxm-index&lang=zh_CN";
public final static String FANS_URL = "http://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&lang=zh_CN&pagesize=10&pageidx=0&type=0&groupid=0";
public final static String LOGOUT_URL = "http://mp.weixin.qq.com/cgi-bin/logout?t=wxm-logout&lang=zh_CN";
public final static String DOWNLOAD_URL = "http://mp.weixin.qq.com/cgi-bin/downloadfile?";
public final static String VERIFY_CODE = "http://mp.weixin.qq.com/cgi-bin/verifycode?";
public final static String POST_MSG = "https://mp.weixin.qq.com/cgi-bin/masssend?t=ajax-response";
public final static String VIEW_HEAD_IMG = "http://mp.weixin.qq.com/cgi-bin/viewheadimg";
public final static String GET_IMG_DATA = "http://mp.weixin.qq.com/cgi-bin/getimgdata";
public final static String GET_REGIONS = "http://mp.weixin.qq.com/cgi-bin/getregions";
public final static String GET_MESSAGE = "http://mp.weixin.qq.com/cgi-bin/getmessage";
public final static String OPER_ADVANCED_FUNC = "http://mp.weixin.qq.com/cgi-bin/operadvancedfunc";
public final static String MASSSEND_PAGE = "http://mp.weixin.qq.com/cgi-bin/masssendpage";
public final static String FILE_MANAGE_PAGE = "http://mp.weixin.qq.com/cgi-bin/filemanagepage";
public final static String OPERATE_APPMSG = "https://mp.weixin.qq.com/cgi-bin/operate_appmsg";
public final static String FMS_TRANSPORT = "http://mp.weixin.qq.com/cgi-bin/fmstransport";
public final static String CONTACT_MANAGE_PAGE = "http://mp.weixin.qq.com/cgi-bin/contactmanagepage";
public final static String OPER_SELF_MENU = "http://mp.weixin.qq.com/cgi-bin/operselfmenu";
public final static String REPLY_RULE_PAGE = "http://mp.weixin.qq.com/cgi-bin/replyrulepage";
public final static String SINGLE_MSG_PAGE = "http://mp.weixin.qq.com/cgi-bin/singlemsgpage";
public final static String USER_INFO_PAGE = "http://mp.weixin.qq.com/cgi-bin/userinfopage";
public final static String DEV_APPLY = "http://mp.weixin.qq.com/cgi-bin/devapply";
public final static String UPLOAD_MATERIAL = "https://mp.weixin.qq.com/cgi-bin/uploadmaterial?cgi=uploadmaterial&type=2&token=416919388&t=iframe-uploadfile&lang=zh_CN&formId=1";
public final static String USER_AGENT_H = "User-Agent";
public final static String REFERER_H = "Referer";
public final static String USER_AGENT = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22";
public final static String UTF_8 = "UTF-8";
private HttpClient client = new HttpClient();
private Cookie[] cookies;
private String cookiestr;
private String token;
private int loginErrCode;
private String loginErrMsg;
private int msgSendCode;
private String msgSendMsg;
private String loginUser;
private String loginPwd;
public boolean isLogin = false;
public Weixin(String user, String pwd) {
this.loginUser = user;
this.loginPwd = pwd;
}
public Cookie[] getCookies() {
return cookies;
}
public void setCookies(Cookie[] cookies) {
this.cookies = cookies;
}
public String getCookiestr() {
return cookiestr;
}
public void setCookiestr(String cookiestr) {
this.cookiestr = cookiestr;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public int getLoginErrCode() {
return loginErrCode;
}
public void setLoginErrCode(int loginErrCode) {
this.loginErrCode = loginErrCode;
}
public String getLoginErrMsg() {
return loginErrMsg;
}
public void setLoginErrMsg(String loginErrMsg) {
this.loginErrMsg = loginErrMsg;
}
public int getMsgSendCode() {
return msgSendCode;
}
public void setMsgSendCode(int msgSendCode) {
this.msgSendCode = msgSendCode;
}
public String getMsgSendMsg() {
return msgSendMsg;
}
public void setMsgSendMsg(String msgSendMsg) {
this.msgSendMsg = msgSendMsg;
}
public String getLoginUser() {
return loginUser;
}
public void setLoginUser(String loginUser) {
this.loginUser = loginUser;
}
public String getLoginPwd() {
return loginPwd;
}
public void setLoginPwd(String loginPwd) {
this.loginPwd = loginPwd;
}
public boolean isLogin() {
return isLogin;
}
public void setLogin(boolean isLogin) {
this.isLogin = isLogin;
}
/**
* 登录,登录失败会重复请求登录
*/
public void login() {
boolean bool = _login();
while (!bool) {
String info = "【登录失败】【错误代码:" + this.loginErrMsg + "】【账号:"
+ this.loginUser + "】正在尝试重新登录....";
log.debug(info);
System.out.println(info);
bool = _login();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
bool = _login();
}
}
System.out.println("登陆成功:");
}
/**
* 发送登录信息,记录cookie,登录状态,token等信息
*
* @return
*/
private boolean _login() {
try {
PostMethod post = new PostMethod(LOGIN_URL);
post.setRequestHeader(USER_AGENT_H, USER_AGENT);
NameValuePair[] params = new NameValuePair[]{
new NameValuePair("username", this.loginUser),
new NameValuePair("pwd", DigestUtils.md5Hex(this.loginPwd
.getBytes())), new NameValuePair("f", "json"),
new NameValuePair("imagecode", "")};
post.setQueryString(params);
int status = client.executeMethod(post);
if (status == HttpStatus.SC_OK) {
String ret = post.getResponseBodyAsString();
LoginJson retcode = JSON.parseObject(ret, LoginJson.class);
if (retcode.getRet() == 302 && retcode.getErrCode() == 0) {
this.cookies = client.getState().getCookies();
StringBuf
- 1
- 2
- 3
- 4
- 5
- 6
前往页