package com.suan.weclient.util.net;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.SocketTimeoutException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.widget.ImageView;
import com.suan.weclient.util.Util;
import com.suan.weclient.util.data.bean.MaterialBean;
import com.suan.weclient.util.data.holder.MessageHolder;
import com.suan.weclient.util.data.bean.MessageBean;
import com.suan.weclient.util.data.bean.UserBean;
import com.suan.weclient.util.BitmapUtil;
public class WeChatLoader {
public static final int WECHAT_RESULT_MESSAGE_OK = 10;
public static final int WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT = 20;
public static final int WECHAT_RESULT_MESSAGE_ERROR_OTHER = 30;
public static final int WECHAT_MASS_OK = 0;
public static final int WECHAT_MASS_ERROR_ONLY_ONE = 64004;
public static final int WECHAT_STAR_OK = 0;
public static final int WECHAT_EDIT_GROUP_OK = 0;
public static final int WECHAT_SEND_VERIFY_CODE_OK = 0;
public static final int WECHAT_SINGLE_CHAT_OK = 0;
public static final int WECHAT_SINGLE_CHAT_OUT_OF_DATE = 10706;
public static final int WECHAT_SINGLE_CHAT_FANS_NOT_RECEIVE = 10703;
private static final String WECHAT_URL_LOGIN = "http://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN";
/*
all,today,yesterday,day before:
url1+url2+day+url4+tokdn+url5
star:
url1+url3+token+url5
*/
public static final int GET_MESSAGE_MODE_ALL = 0;
public static final int GET_MESSAGE_MODE_TODAY = 1;
public static final int GET_MESSAGE_MODE_YESTERDAY = 2;
public static final int GET_MESSAGE_MODE_DAY_BEFORE = 3;
public static final int GET_MESSAGE_MODE_OLDER = 4;
public static final int GET_MESSAGE_MODE_STAR = 5;
public static final int GET_MESSAGE_MODE_SEARCH = 6;
private static final String WECHAT_URL_GET_MESSAGE_LIST = "https://mp.weixin.qq.com/cgi-bin/message";
private static final String WECHAT_URL_GET_NEW_MESSAGE_COUNT = "https://mp.weixin.qq.com/cgi-bin/getnewmsgnum";
private static final String WECHAT_URL_MESSAGE_LOAD_PAGE = "https://mp.weixin.qq.com/cgi-bin/message";
private static final String WECHAT_URL_MESSAGE_REPLY = "https://mp.weixin.qq.com/cgi-bin/singlesend";
private static final String WECHAT_URL_MESSAGE_STAR = "https://mp.weixin.qq.com/cgi-bin/setstarmessage";
private static final String WECHAT_URL_MESSAGE_MASS = "https://mp.weixin.qq.com/cgi-bin/masssend";
private static final String WECHAT_URL_GET_MESSAGE_PROFILE_IMG = "https://mp.weixin.qq.com/misc/getheadimg";
private static final String WECHAT_URL_GET_USER_PROFILE = "https://mp.weixin.qq.com/cgi-bin/home";
private static final String WECHAT_URL_GET_MASS_DATA = "https://mp.weixin.qq.com/cgi-bin/masssendpage";
private static final String WECHAT_URL_GET_MESSAGE_IMG = "https://mp.weixin.qq.com/cgi-bin/getimgdata";
public static final String WECHAT_URL_MESSAGE_IMG_LARGE = "large";
public static final String WECHAT_URL_MESSAGE_IMG_SMALL = "small";
private static final String WECHAT_URL_GET_VOICE_MESSAGE = "https://mp.weixin.qq.com/cgi-bin/getvoicedata";
private static final String WECHAT_URL_GET_VOICE_MESSAGE_REFERER = "https://mp.weixin.qq.com/mpres/zh_CN/htmledition/plprecorder/soundmanager2.swf";
private static final String WECHAT_URL_GET_APP_MSG_LIST = "https://mp.weixin.qq.com/cgi-bin/appmsg";
private static final String WECHAT_URL_GET_FANS_LIST = "https://mp.weixin.qq.com/cgi-bin/contactmanage";
private static final String WECHAT_URL_MODIFY_CONTACTS = "https://mp.weixin.qq.com/cgi-bin/modifycontacts";
public static final int MODIFY_CONTACTS_ACTION_MODIFY = 1;
public static final int MODIFY_CONTACTS_ACTION_REMARK = 2;
private static final String WECHAT_URL_GET_CONTACT_INFO = "https://mp.weixin.qq.com/cgi-bin/getcontactinfo";
private static final String WECHAT_URL_GET_CHAT_LIST = "https://mp.weixin.qq.com/cgi-bin/singlesendpage";
private static final String WECHAT_URL_CHAT_SINGLE_SEND = "https://mp.weixin.qq.com/cgi-bin/singlesend";
private static final String WECHAT_URL_GET_CHAT_NEW_ITEM = "https://mp.weixin.qq.com/cgi-bin/singlesendpage";
private static final String WECHAT_URL_GET_MATERIAL_LIST = "https://mp.weixin.qq.com/cgi-bin/filepage";
private static final String WECHAT_URL_GET_UPLOAD_INFO = "https://mp.weixin.qq.com/cgi-bin/filepage";
private static final String WECHAT_URL_UPLOAD_FILE = "https://mp.weixin.qq.com/cgi-bin/filetransfer";
private static final String WECHAT_URL_VERIFY = "https://mp.weixin.qq.com/cgi-bin/securesmsverify";
private static final String WECHAT_URL_VERIFY_PAGE = "https://mp.weixin.qq.com/cgi-bin/readtemplate";
//verify mode
public static final int VERIFY_TYPE_GET_CODE = 3;
public static final int VERIFY_TYPE_VERIFY_CODE = 4;
public interface WechatLoginCallBack {
public void onBack(int resultCode, String result, Header[] headers);
}
public static void wechatLogin(
final WechatLoginCallBack loginCallBack, final String username,
final String pwd, final String imgcode, final String f) {
final Handler loadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
loginCallBack.onBack(msg.arg1, resultHolder.get("result"),
(Header[]) resultHolder.getExtra("headers"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
loginCallBack.onBack(msg.arg1, null, null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
loginCallBack.onBack(msg.arg1, null, null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList
.add(new BasicNameValuePair("Referer",
"https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm-login&lang=zh_CN"));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("pwd", pwd));
params.add(new BasicNameValuePair("imgcode", imgcode));
params.add(new BasicNameValuePair("f", f));
ResponseHolder responseHolder = httpPost(WECHAT_URL_LOGIN, headerList,
params);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
Header[] headers = responseHolder.response.getAllHeaders();
resultHolder.putExtra("headers", headers);
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception e) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetVerifyPageCallBack {
public void onBack(int resultCode, String strResult, Header[] headers, String referer);
}
public static void wechatGetVerifyPage(
final String phone,
final WechatGetVerifyPageCallBack wechatGetVerifyPageCallBack) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
wechatGetVerifyPageCallBack.onBack(msg.arg1, resultHolder.get("result"),
(Header[]) resultHolder.getExtra("headers"),
resultHolder.get("referer"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
wechatGetVerifyPageCallBack.onBack(msg.arg1, null, null, null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
wechatGetVerifyPageCallBack.onBack(msg.arg1, null, null, null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
String targetUrl = WECHAT_URL_VERIFY_PAGE;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("t", "user/validate_phone_tmpl"));
paramList.add(new BasicNameValuePair("type", ""));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
paramList.add(new BasicNameValuePair("protected", "1"));
paramList.add(new BasicNameValuePair("phone", phone));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.putExtra("headers", responseHolder.response.getAllHeaders());
resultHolder.put("result", strResult);
resultHolder.put("referer", targetUrl);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetUserProfleCallBack {
public void onBack(int resultCode, String strResult, String referer);
}
public static void wechatGetUserProfile(
final WechatGetUserProfleCallBack userProfileCallBack,
final UserBean userBean) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
userProfileCallBack.onBack(msg.arg1, resultHolder.get("result"),
resultHolder.get("referer"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
userProfileCallBack.onBack(msg.arg1, "timeOut", null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
userProfileCallBack.onBack(msg.arg1, "other", null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
String targetUrl = WECHAT_URL_GET_USER_PROFILE;
/* PROFILE = "https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token=";
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("t", "home/index"));
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
resultHolder.put("referer", targetUrl);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
Log.e("wechat loader","get user profile error other");
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatMessageListCallBack {
public void onBack(int resultCode, String strResult, String referer);
}
public static void wechatGetMessageList(
final WechatMessageListCallBack messageListCallBack,
final UserBean userBean, final int mode, final String keyword, final boolean hideKeyWordMessage) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
ResultHolder resultHolder = (ResultHolder) msg.obj;
messageListCallBack.onBack(msg.arg1, resultHolder.get("result"),
resultHolder.get("referer"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
messageListCallBack.onBack(msg.arg1, "timeOut", null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
messageListCallBack.onBack(msg.arg1, "other", null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
/*
all,today,yesterday,day before:
url1+url2+day+url4+tokdn+url5
star:
url1+url3+token+url5
*/
/*
1 = "https://mp.weixin.qq.com/cgi-bin/message?t=message/list&count=20";
2 = "&day=";
3 = "&action=star&token=";
4 = "&token=";
5 = "&lang=zh_CN";
6 = "&filterivrmsg=";*/
int hideKeyWord = hideKeyWordMessage ? 1 : 0;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("t", "message/list"));
paramList.add(new BasicNameValuePair("count", "20"));
String targetUrl = WECHAT_URL_GET_MESSAGE_LIST;
switch (mode) {
case GET_MESSAGE_MODE_ALL:
paramList.add(new BasicNameValuePair("filterivrmsg", hideKeyWord + ""));
paramList.add(new BasicNameValuePair("day", "7"));
break;
case GET_MESSAGE_MODE_TODAY:
paramList.add(new BasicNameValuePair("filterivrmsg", hideKeyWord + ""));
paramList.add(new BasicNameValuePair("day", "0"));
break;
case GET_MESSAGE_MODE_YESTERDAY:
paramList.add(new BasicNameValuePair("filterivrmsg", hideKeyWord + ""));
paramList.add(new BasicNameValuePair("day", "1"));
break;
case GET_MESSAGE_MODE_DAY_BEFORE:
paramList.add(new BasicNameValuePair("filterivrmsg", hideKeyWord + ""));
paramList.add(new BasicNameValuePair("day", "2"));
break;
case GET_MESSAGE_MODE_OLDER:
paramList.add(new BasicNameValuePair("day", "3"));
break;
case GET_MESSAGE_MODE_STAR:
paramList.add(new BasicNameValuePair("filterivrmsg", hideKeyWord + ""));
paramList.add(new BasicNameValuePair("action", "star"));
break;
case GET_MESSAGE_MODE_SEARCH:
paramList.add(new BasicNameValuePair("action", "search"));
paramList.add(new BasicNameValuePair("keyword", keyword));
break;
}
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
resultHolder.put("referer", targetUrl);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatMessagePageCallBack {
public void onBack(int resultCode, String strResult, String referer);
}
public static void wechatGetMessagePage(
final WechatMessagePageCallBack messagePageCallBack,
final MessageHolder messageHolder, final int page, final int mode, final boolean hideKeyWordMessage) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
messagePageCallBack.onBack(msg.arg1, resultHolder.get("result"),
resultHolder.get("referer"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
messagePageCallBack.onBack(msg.arg1, "timeOut", null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
messagePageCallBack.onBack(msg.arg1, "other", null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ messageHolder.getUserBean().getSlaveSid() + "; "
+ "slave_user="
+ messageHolder.getUserBean().getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
int offset = (page - 1) * 20;
String targetUrl = WECHAT_URL_MESSAGE_LOAD_PAGE;
Log.e("get page message", "" + mode);
int hideKeyWord = hideKeyWordMessage ? 1 : 0;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("t", "message/list"));
paramList.add(new BasicNameValuePair("keyword", ""));
paramList.add(new BasicNameValuePair("filterivrmsg", hideKeyWord + ""));
paramList.add(new BasicNameValuePair("frommsgid", messageHolder.getLatestMsgId()));
paramList.add(new BasicNameValuePair("offset", offset + ""));
paramList.add(new BasicNameValuePair("count", "20"));
switch (mode) {
case GET_MESSAGE_MODE_ALL:
paramList.add(new BasicNameValuePair("day", "7"));
;
break;
case GET_MESSAGE_MODE_TODAY:
paramList.add(new BasicNameValuePair("day", "0"));
break;
case GET_MESSAGE_MODE_YESTERDAY:
paramList.add(new BasicNameValuePair("day", "1"));
break;
case GET_MESSAGE_MODE_DAY_BEFORE:
paramList.add(new BasicNameValuePair("day", "2"));
break;
case GET_MESSAGE_MODE_OLDER:
paramList.add(new BasicNameValuePair("day", "3"));
break;
case GET_MESSAGE_MODE_STAR:
paramList.add(new BasicNameValuePair("action", "star"));
break;
}
paramList.add(new BasicNameValuePair("token", messageHolder.getUserBean().getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
resultHolder.put("referer", targetUrl);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatMessageReplyCallBack {
public void onBack(int resultCode, String strResult);
}
public static void wechatMessageReply(
final WechatMessageReplyCallBack messagReplyCallBack,
final UserBean userBean, final MessageBean messageBean,
final String replyContent) {
final Handler loadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
messagReplyCallBack.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
messagReplyCallBack.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
messagReplyCallBack.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
headerList.add(new BasicNameValuePair("Referer", messageBean
.getReferer()));
ArrayList<NameValuePair> paramArrayList = new ArrayList<NameValuePair>();
paramArrayList.add(new BasicNameValuePair("mask", "false"));
paramArrayList.add(new BasicNameValuePair("tofakeid",
messageBean.getFakeId()));
paramArrayList.add(new BasicNameValuePair("imgcode", ""));
paramArrayList.add(new BasicNameValuePair("type", "1"));
paramArrayList.add(new BasicNameValuePair("content",
replyContent));
paramArrayList.add(new BasicNameValuePair("quickreplyid",
messageBean.getId()));
paramArrayList
.add(new BasicNameValuePair("t", "ajax-response"));
paramArrayList.add(new BasicNameValuePair("token", userBean
.getToken()));
paramArrayList.add(new BasicNameValuePair("lang", "zh_CN"));
String targetUrl = WECHAT_URL_MESSAGE_REPLY;
ResponseHolder responseHolder = httpPost(targetUrl, headerList,
paramArrayList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatMessageStarCallBack {
public void onBack(int resultCode, String strResult);
}
public static void wechatMessageStar(
final WechatMessageStarCallBack messagStarCallBack,
final UserBean userBean, final MessageBean messageBean,
final boolean star) {
final Handler loadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
messagStarCallBack.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
messagStarCallBack.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
messagStarCallBack.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
headerList.add(new BasicNameValuePair("Referer", messageBean
.getReferer()));
ArrayList<NameValuePair> paramArrayList = new ArrayList<NameValuePair>();
paramArrayList.add(new BasicNameValuePair("msgid", messageBean
.getId()));
paramArrayList.add(new BasicNameValuePair("value", star ? "1"
: "0"));
paramArrayList.add(new BasicNameValuePair("t",
"ajax-setstarmessage"));
paramArrayList.add(new BasicNameValuePair("token", userBean
.getToken()));
paramArrayList.add(new BasicNameValuePair("lang", "zh_CN"));
String targetUrl = WECHAT_URL_MESSAGE_STAR;
ResponseHolder responseHolder = httpPost(targetUrl, headerList,
paramArrayList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatMassCallBack {
public void onBack(int resultCode, String strResult);
}
public static void wechatMass(
final WechatMassCallBack massCallBack, final UserBean userBean,
final MaterialBean materialBean) {
final Handler loadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
massCallBack.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
massCallBack.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
massCallBack.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
headerList.add(new BasicNameValuePair("Referer",
"https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token="
+ userBean.getToken() + "&lang=zh_CN"));
ArrayList<NameValuePair> paramArrayList = new ArrayList<NameValuePair>();
int type = materialBean.getType();
paramArrayList.add(new BasicNameValuePair("type", type+""));
Log.e("type",""+type);
switch(type){
case MaterialBean.MATERIAL_TYPE_TEXT:
paramArrayList.add(new BasicNameValuePair("content", materialBean.getContent()));
break;
case MaterialBean.MATERIAL_TYPE_IMG:
paramArrayList.add(new BasicNameValuePair("fileid", materialBean.getFile_id()));
break;
case MaterialBean.MATERIAL_TYPE_VOICE:
paramArrayList.add(new BasicNameValuePair("fileid", materialBean.getFile_id()));
break;
case MaterialBean.MATERIAL_TYPE_APP:
if(materialBean.getAppItemBean()!=null){
String msgId = materialBean.getAppItemBean().getApp_id();
Log.e("msg id",""+msgId);
paramArrayList.add(new BasicNameValuePair("appmsgid",msgId));
}
break;
}
paramArrayList.add(new BasicNameValuePair("sex", "0"));
paramArrayList.add(new BasicNameValuePair("groupid", "-1"));
paramArrayList.add(new BasicNameValuePair("synctxweibo", "0"));
paramArrayList.add(new BasicNameValuePair("synctxnews", "0"));
paramArrayList.add(new BasicNameValuePair("country", ""));
paramArrayList.add(new BasicNameValuePair("province", ""));
paramArrayList.add(new BasicNameValuePair("city", ""));
paramArrayList.add(new BasicNameValuePair("imgcode", ""));
paramArrayList.add(new BasicNameValuePair("token", userBean
.getToken()));
paramArrayList.add(new BasicNameValuePair("lang", "zh_CN"));
paramArrayList.add(new BasicNameValuePair("random",
Util.getRandomFloat(16)));
paramArrayList.add(new BasicNameValuePair("f", "json"));
paramArrayList.add(new BasicNameValuePair("ajax", "1"));
paramArrayList
.add(new BasicNameValuePair("t", "ajax-response"));
String targetUrl = WECHAT_URL_MESSAGE_MASS;
ResponseHolder responseHolder = httpPost(targetUrl, headerList,
paramArrayList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetHeadImgCallBack {
public void onBack(int resultCode, Bitmap bitmap, String referer, ImageView imageView);
}
public static void wechatGetHeadImg(
final WechatGetHeadImgCallBack getHeadImgCallBack,
final UserBean userBean, final String fakeId, final String referer,
final ImageView imageView) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
getHeadImgCallBack.onBack(msg.arg1,
(Bitmap) resultHolder.getExtra("result"),
resultHolder.get("referer"), imageView);
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
getHeadImgCallBack.onBack(msg.arg1, null, "timeOut", null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
getHeadImgCallBack.onBack(msg.arg1, null, "other", null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
headerList.add(new BasicNameValuePair("Referer", referer));
String targetUrl = WECHAT_URL_GET_MESSAGE_PROFILE_IMG;
/*
1 = "https://mp.weixin.qq.com/cgi-bin/getheadimg?token=";
2 = "&fakeid=";
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("fakeid", fakeId));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
Bitmap bitmap = BitmapUtil.decodeBitmap((InputStream) responseHolder.response
.getEntity().getContent());
if (bitmap != null) {
resultHolder.putExtra("result", bitmap);
resultHolder.put("referer", targetUrl);
message.obj = resultHolder;
} else {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetMessageImgCallBack {
public void onBack(int resultCode, Bitmap bitmap, ImageView imageView);
}
public static void wechatGetMessageImg(
final WechatGetMessageImgCallBack getMessageImgCallBack,
final UserBean userBean, final MessageBean messageBean,
final ImageView imageView, final String imgType) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
getMessageImgCallBack.onBack(msg.arg1,
(Bitmap) resultHolder.getExtra("result"), imageView);
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
getMessageImgCallBack.onBack(msg.arg1, null, null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
getMessageImgCallBack.onBack(msg.arg1, null, null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user=" + userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
headerList.add(new BasicNameValuePair("Referer", messageBean.getReferer()));
String targetUrl = WECHAT_URL_GET_MESSAGE_IMG;
/*
1 = "https://mp.weixin.qq.com/cgi-bin/getimgdata?token=";
2 = "&msgid=";
3 = "&mode=";
4 = "&source=&fileId=0";
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("msgid", messageBean.getId()));
paramList.add(new BasicNameValuePair("mode", imgType));
paramList.add(new BasicNameValuePair("source", messageBean.getSource()));
paramList.add(new BasicNameValuePair("fileId", messageBean.getFileId()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
Bitmap bitmap = BitmapUtil.decodeBitmap((InputStream) responseHolder.response
.getEntity().getContent());
if (bitmap != null) {
resultHolder.putExtra("result", bitmap);
message.obj = resultHolder;
} else {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetNormalImgCallBack {
public void onBack(int resultCode, Bitmap bitmap, ImageView imageView);
}
public static void wechatGetNormalImg(
final WechatGetNormalImgCallBack getNormalImgCallBack,
final String imgUrl,final UserBean userBean,
final ImageView imageView) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
getNormalImgCallBack.onBack(msg.arg1,
(Bitmap) resultHolder.getExtra("result"), imageView);
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
getNormalImgCallBack.onBack(msg.arg1, null, null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
getNormalImgCallBack.onBack(msg.arg1, null, null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user=" + userBean.getSlaveUser()));
String targetUrl = imgUrl;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
Bitmap bitmap = BitmapUtil.decodeBitmap((InputStream) responseHolder.response
.getEntity().getContent());
if (bitmap != null) {
resultHolder.putExtra("result", bitmap);
message.obj = resultHolder;
} else {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetMaterialImgCallBack {
public void onBack(int resultCode, Bitmap bitmap, ImageView imageView);
}
public static void wechatGetMaterialImg(
final WechatGetMaterialImgCallBack getMaterialImgCallBack,
final UserBean userBean, final MaterialBean materialBean,
final ImageView imageView, final String imgType) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
getMaterialImgCallBack.onBack(msg.arg1,
(Bitmap) resultHolder.getExtra("result"), imageView);
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
getMaterialImgCallBack.onBack(msg.arg1, null, null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
getMaterialImgCallBack.onBack(msg.arg1, null, null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user=" + userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
String referer = "Referer:https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token=" + userBean.getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
String targetUrl = WECHAT_URL_GET_MESSAGE_IMG;
/*
1 = "https://mp.weixin.qq.com/cgi-bin/getimgdata?token=";
2 = "&msgid=";
3 = "&mode=";
4 = "&source=&fileId=0";
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("msgid", "{msgid}"));
paramList.add(new BasicNameValuePair("mode", imgType));
paramList.add(new BasicNameValuePair("source", "file"));
paramList.add(new BasicNameValuePair("fileId", materialBean.getFile_id()));
paramList.add(new BasicNameValuePair("own", "-1"));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
Bitmap bitmap = BitmapUtil.decodeBitmap((InputStream) responseHolder.response
.getEntity().getContent());
if (bitmap != null) {
resultHolder.putExtra("result", bitmap);
message.obj = resultHolder;
} else {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetVoiceMsgCallBack {
public void onBack(int resultCode, byte[] bytes);
}
public static void wechatGetVoiceMsg(
final WechatGetVoiceMsgCallBack getVoiceMsgCallBack,
final UserBean userBean, final MessageBean messageBean, final int length) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
getVoiceMsgCallBack.onBack(msg.arg1, (byte[]) resultHolder
.getExtra("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
getVoiceMsgCallBack.onBack(msg.arg1, null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
getVoiceMsgCallBack.onBack(msg.arg1, null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
headerList.add(new BasicNameValuePair("Referer",
WECHAT_URL_GET_VOICE_MESSAGE_REFERER));
String targetUrl = WECHAT_URL_GET_VOICE_MESSAGE;
/*
1 = "https://mp.weixin.qq.com/cgi-bin/getvoicedata?msgid=";
2 = "&fileid=&token=";
3 = "&lang=zh_CN";
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("msgid", messageBean.getId()));
paramList.add(new BasicNameValuePair("fileid", ""));
paramList.add(new BasicNameValuePair("source", messageBean.getSource()));
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
InputStream inputStream = (InputStream) responseHolder.response
.getEntity().getContent();
byte[] bytes = Util.readAllBytes(inputStream);
resultHolder.putExtra("result", bytes);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetVoiceMaterialCallBack {
public void onBack(int resultCode, byte[] bytes);
}
public static void wechatGetVoiceMaterial(
final WechatGetVoiceMaterialCallBack getVoiceMaterialCallBack,
final UserBean userBean, final MaterialBean materialBean) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
getVoiceMaterialCallBack.onBack(msg.arg1, (byte[]) resultHolder
.getExtra("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
getVoiceMaterialCallBack.onBack(msg.arg1, null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
getVoiceMaterialCallBack.onBack(msg.arg1, null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
String referer = "https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token=" + userBean.getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer",
referer));
String targetUrl = WECHAT_URL_GET_VOICE_MESSAGE;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("msgid", ""));
paramList.add(new BasicNameValuePair("fileid", materialBean.getFile_id()));
paramList.add(new BasicNameValuePair("source", "file"));
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
InputStream inputStream = (InputStream) responseHolder.response
.getEntity().getContent();
// byte[] bytes = new byte[length * 3];
byte[] bytes = Util.readAllBytes(inputStream);
resultHolder.putExtra("result", bytes);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetAppMsgListCallBack {
public void onBack(int resultCode, String result);
}
public static void wechatGetAppListMsg(
final WechatGetAppMsgListCallBack getAppMsgListCallBack,
final int begin,
final UserBean userBean) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
getAppMsgListCallBack.onBack(msg.arg1,
resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
getAppMsgListCallBack.onBack(msg.arg1, null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
getAppMsgListCallBack.onBack(msg.arg1, null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user=" + userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
String referer = "https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token="
+ userBean.getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
String targetUrl = WECHAT_URL_GET_APP_MSG_LIST;
/*
?token=1651728002
&lang=zh_CN
&random=0.6870156622989926
&f=json
&ajax=1
&type=10
&action=list
&begin=0
&count=10
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
paramList.add(new BasicNameValuePair("random", Util.getRandomFloat(16)));
paramList.add(new BasicNameValuePair("f", "json"));
paramList.add(new BasicNameValuePair("ajax", "1"));
paramList.add(new BasicNameValuePair("type", "10"));
paramList.add(new BasicNameValuePair("action", "list"));
paramList.add(new BasicNameValuePair("begin", ""+begin));
paramList.add(new BasicNameValuePair("count", "10"));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetMassData {
public void onBack(int resultCode, String strResult);
}
public static void wechatGetMassData(
final WechatGetMassData wechatGetMassData, final UserBean userBean) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
wechatGetMassData.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
wechatGetMassData.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
wechatGetMassData.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
headerList.add(new BasicNameValuePair("Referer",
WECHAT_URL_GET_USER_PROFILE + userBean.getToken()));
String targetUrl = WECHAT_URL_GET_MASS_DATA;
/*
1 = "https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token=";
2 = "&lang=zh_CN";
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("t", "mass/send"));
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetFansList {
public void onBack(int resultCode, String strResult, String referer);
}
public static void wechatGetFansList(
final WechatGetFansList wechatGetFansList, final UserBean userBean,
final String groupId, final int page) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
wechatGetFansList.onBack(msg.arg1, resultHolder.get("result"),
resultHolder.get("referer"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
wechatGetFansList.onBack(msg.arg1, "timeOut", null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
wechatGetFansList.onBack(msg.arg1, "other", null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
String referer = "";
if (page == 0) {
if (groupId.equals("-1")) {
referer = "https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token="
+ userBean.getToken();
} else {
referer = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=10&pageidx=0&type=0&token=" + userBean.getToken() + "&lang=zh_CN";
}
} else {
referer = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=10&pageidx=" + (page - 1)
+ "&type=0&groupid=" + groupId
+ "&token=" + userBean.getToken()
+ "&lang=zh_CN";
}
headerList.add(new BasicNameValuePair("Referer", referer));
String targetUrl = WECHAT_URL_GET_FANS_LIST;
/*
1 = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=10&pageidx=";
*/
/*
* if want all the user,use 2,without groupId if want group user ,use 3,with
* groupId
*//*
2 = "&type=0";
3 = "&type=0&groupid=";
4 = "&token=";
5 = "&lang=zh_CN";
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("t", "user/index"));
paramList.add(new BasicNameValuePair("pagesize", "10"));
paramList.add(new BasicNameValuePair("pageidx", page + ""));
paramList.add(new BasicNameValuePair("type", "0"));
if (groupId.equals("-1")) {
// all user
} else {
paramList.add(new BasicNameValuePair("groupid", groupId));
}
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
resultHolder.put("referer", targetUrl);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatVefityCallBack {
public void onBack(int resultCode, String strResult);
}
public static void wechatVerify(
final WechatVefityCallBack wechatVerifyCallback,
final int action,
final String verifySession,
final String code
) {
final Handler loadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
wechatVerifyCallback.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
wechatVerifyCallback.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
wechatVerifyCallback.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "verifysession"
+ verifySession + "; "));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
String referer = "https://mp.weixin.qq.com/cgi-bin/readtemplate?t=user/validate_phone_tmpl&lang=zh_CN&type=&protected=1&phone=%2B86130******7";
headerList.add(new BasicNameValuePair("Referer",
referer));
ArrayList<NameValuePair> paramArrayList = new ArrayList<NameValuePair>();
paramArrayList.add(new BasicNameValuePair("ajax", "1"));
paramArrayList.add(new BasicNameValuePair("f", "json"));
paramArrayList.add(new BasicNameValuePair("lang", "zh_CN"));
String random = Util.getRandomFloat(17);
switch (action) {
case VERIFY_TYPE_GET_CODE:
random = Util.getRandomFloat(16);
paramArrayList.add(new BasicNameValuePair("token", ""));
paramArrayList.add(new BasicNameValuePair("act", "sendsmscode"));
break;
case VERIFY_TYPE_VERIFY_CODE:
random = Util.getRandomFloat(17);
paramArrayList.add(new BasicNameValuePair("act", "verifysmscode"));
paramArrayList.add(new BasicNameValuePair("token", ""));
paramArrayList.add(new BasicNameValuePair("type", ""));
paramArrayList.add(new BasicNameValuePair("login_sms_code", code));
break;
}
paramArrayList.add(new BasicNameValuePair("random", random));
Log.e("param", "" + paramArrayList.toString());
String targetUrl = WECHAT_URL_VERIFY;
ResponseHolder responseHolder = httpPost(targetUrl, headerList,
paramArrayList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatModifyContactsCallBack {
public void onBack(int resultCode, String strResult);
}
public static void wechatModifyContacts(
final WechatModifyContactsCallBack editFansGroupCallBack,
final UserBean userBean, final int action,
final String groupId, final String toFakeIdList,
final String remark
) {
final Handler loadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
editFansGroupCallBack.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
editFansGroupCallBack.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
editFansGroupCallBack.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
String referer = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=10&pageidx=0&type=0&groupid=0&token=" + userBean.getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer",
referer));
ArrayList<NameValuePair> paramArrayList = new ArrayList<NameValuePair>();
paramArrayList.add(new BasicNameValuePair("ajax", "1"));
paramArrayList.add(new BasicNameValuePair("f", "json"));
paramArrayList.add(new BasicNameValuePair("lang", "zh_CN"));
String random = Util.getRandomFloat(13);
random += (int) (Math.random() * 1000);
paramArrayList.add(new BasicNameValuePair("random", random));
switch (action) {
case MODIFY_CONTACTS_ACTION_MODIFY:
paramArrayList.add(new BasicNameValuePair("action", "modifycontacts"));
paramArrayList.add(new BasicNameValuePair("t", "ajax-putinto-group"));
paramArrayList.add(new BasicNameValuePair("contacttype", groupId));
paramArrayList.add(new BasicNameValuePair("tofakeidlist", toFakeIdList));
break;
case MODIFY_CONTACTS_ACTION_REMARK:
paramArrayList.add(new BasicNameValuePair("action", "setremark"));
paramArrayList.add(new BasicNameValuePair("t", "ajax-response"));
paramArrayList.add(new BasicNameValuePair("remark", remark));
paramArrayList.add(new BasicNameValuePair("tofakeuin", toFakeIdList));
break;
}
paramArrayList.add(new BasicNameValuePair("token", userBean
.getToken()));
String targetUrl = WECHAT_URL_MODIFY_CONTACTS;
ResponseHolder responseHolder = httpPost(targetUrl, headerList,
paramArrayList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetContactInfoCallBack {
public void onBack(int resultCode, String strResult);
}
public static void wechatGetContactInfo(
final WechatGetContactInfoCallBack getContactInfoCallBack,
final UserBean userBean,
final String fakeId
) {
final Handler loadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
getContactInfoCallBack.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
getContactInfoCallBack.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
getContactInfoCallBack.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
String referer = "https://mp.weixin.qq.com/cgi-bin/message?t=message/list&count=20&day=7&token=" + userBean.getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer",
referer));
ArrayList<NameValuePair> paramArrayList = new ArrayList<NameValuePair>();
paramArrayList.add(new BasicNameValuePair("ajax", "1"));
paramArrayList.add(new BasicNameValuePair("f", "json"));
paramArrayList.add(new BasicNameValuePair("fakeid", fakeId));
paramArrayList.add(new BasicNameValuePair("lang", "zh_CN"));
String random = Util.getRandomFloat(13);
random += (int) (Math.random() * 1000);
paramArrayList.add(new BasicNameValuePair("random", random));
paramArrayList.add(new BasicNameValuePair("t", "ajax-getcontactinfo"));
paramArrayList.add(new BasicNameValuePair("token", userBean
.getToken()));
String targetUrl = WECHAT_URL_GET_CONTACT_INFO;
ResponseHolder responseHolder = httpPost(targetUrl, headerList,
paramArrayList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetChatList {
public void onBack(int resultCode, String strResult);
}
public static void wechatGetChatList(
final WechatGetChatList wechatGetChatList, final UserBean userBean,
final String toFakeId) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
wechatGetChatList.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
wechatGetChatList.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
wechatGetChatList.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
/*
1 = "https://mp.weixin.qq.com/cgi-bin/singlesendpage?tofakeid=";
2 = "&t=message/send&action=index&token=";
3 = "&lang=zh_CN";
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("tofakeid", toFakeId));
paramList.add(new BasicNameValuePair("t", "message/send"));
paramList.add(new BasicNameValuePair("action", "index"));
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
String targetUrl = WECHAT_URL_GET_CHAT_LIST;
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
/**
* 回调接口 *
*/
public interface WechatChatSingleCallBack {
public void onBack(int resultCode, String result);
}
public static void wechatChatSingle(
final WechatChatSingleCallBack chatSingleCallBack,
final UserBean userBean, final MessageBean messageBean) {
final Handler loadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
chatSingleCallBack.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
chatSingleCallBack.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
chatSingleCallBack.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
String referer = "https://mp.weixin.qq.com/cgi-bin/singlesendpage?tofakeid="
+ messageBean.getToFakeId() + "&t=message/send&action=index&token="
+ userBean.getToken()
+ "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("type", messageBean.getType() + ""));
params.add(new BasicNameValuePair("content", messageBean.getContent()));
params.add(new BasicNameValuePair("tofakeid", ""
+ messageBean.getToFakeId()));
params.add(new BasicNameValuePair("imgcode", ""));
params.add(new BasicNameValuePair("token", ""
+ userBean.getToken()));
params.add(new BasicNameValuePair("lang", "zh_CN"));
params.add(new BasicNameValuePair("random",
Util.getRandomFloat(18)));
params.add(new BasicNameValuePair("f", "json"));
params.add(new BasicNameValuePair("ajax", "1"));
params.add(new BasicNameValuePair("t", "ajax-response"));
ResponseHolder responseHolder = httpPost(WECHAT_URL_CHAT_SINGLE_SEND,
headerList, params);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetChatNewItems {
public void onBack(int resultCode, String strResult);
}
public static void wechatGetChatNewItems(
final WechatGetChatNewItems wechatGetChatNewItems, final UserBean userBean,
final MessageBean messageBean,
final String lastMsgId,
final String createTime,
final String toFakeId) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
wechatGetChatNewItems.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
wechatGetChatNewItems.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
wechatGetChatNewItems.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
String referer = "https://mp.weixin.qq.com/cgi-bin/singlesendpage?tofakeid="
+ messageBean.getToFakeId() + "&t=message/send&action=index&token="
+ userBean.getToken()
+ "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
/*
1 = "https://mp.weixin.qq.com/cgi-bin/singlesendpage?token=";
2 = "&lang=zh_CN&random=0.7740735916886479&f=json&ajax=1&tofakeid=";
3 = "&action=sync&lastmsgfromfakeid=";
4 = "&lastmsgid=";
5 = "&createtime=";
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
paramList.add(new BasicNameValuePair("random", Util.getRandomFloat(16)));
paramList.add(new BasicNameValuePair("f", "json"));
paramList.add(new BasicNameValuePair("ajax", "1"));
paramList.add(new BasicNameValuePair("tofakeid", toFakeId));
paramList.add(new BasicNameValuePair("action", "sync"));
paramList.add(new BasicNameValuePair("lastmsgfromfakeid", userBean.getFakeId()));
paramList.add(new BasicNameValuePair("lastmsgid", lastMsgId));
paramList.add(new BasicNameValuePair("createtime", createTime));
String targetUrl = WECHAT_URL_GET_CHAT_NEW_ITEM;
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetNewMessageCountCallBack {
public void onBack(int resultCode, String result);
}
public static void wechatGetNewMessageCount(
final WechatGetNewMessageCountCallBack newMessageCountCallBack, final UserBean userBean, final String lastMsgId) {
final Handler loadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
newMessageCountCallBack.onBack(msg.arg1, resultHolder.get("result")
);
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
newMessageCountCallBack.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
newMessageCountCallBack.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
String referer = "https://mp.weixin.qq.com/cgi-bin/message?t=message/list&count=20&day=7&token=" + userBean.getToken() + "&lang=zh_CN";
headerList
.add(new BasicNameValuePair("Referer",
referer));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("ajax", "1"));
params.add(new BasicNameValuePair("f", "json"));
params.add(new BasicNameValuePair("lastmsgid", lastMsgId));
params.add(new BasicNameValuePair("lang", "zh_CN"));
params.add(new BasicNameValuePair("random", Util.getRandomFloat(16)));
params.add(new BasicNameValuePair("t", "ajax-getmsgnum"));
params.add(new BasicNameValuePair("token", userBean.getToken()));
ResponseHolder responseHolder = httpPost(WECHAT_URL_GET_NEW_MESSAGE_COUNT, headerList,
params);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatMaterialListCallBack {
public void onBack(int resultCode, String strResult, String referer);
}
public static void wechatGetMaterialList(
final WechatMaterialListCallBack materialListCallBack,
final UserBean userBean, final int type,
final int begin) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
materialListCallBack.onBack(msg.arg1, resultHolder.get("result"),
resultHolder.get("referer"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
materialListCallBack.onBack(msg.arg1, "timeOut", null);
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
materialListCallBack.onBack(msg.arg1, "other", null);
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
String referer = "https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token=" + userBean.getToken() + "&lang=zh_CN";
headerList
.add(new BasicNameValuePair("Referer",
referer));
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
paramList.add(new BasicNameValuePair("random", Util.getRandomFloat(16)));
paramList.add(new BasicNameValuePair("f", "json"));
paramList.add(new BasicNameValuePair("ajax", "1"));
paramList.add(new BasicNameValuePair("type", "" + type));
paramList.add(new BasicNameValuePair("begin", begin + ""));
paramList.add(new BasicNameValuePair("count", "10"));
String targetUrl = WECHAT_URL_GET_MATERIAL_LIST;
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
resultHolder.put("referer", targetUrl);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatGetUploadInfo {
public void onBack(int resultCode, String strResult);
}
public static void wechatGetUploadInfo(
final WechatGetUploadInfo wechatGetUploadInfo, final UserBean userBean
) {
final Handler loadHandler = new Handler() {
// 子类必须重写此方法,接受数据
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
ResultHolder resultHolder = (ResultHolder) msg.obj;
wechatGetUploadInfo.onBack(msg.arg1, resultHolder.get("result"));
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
wechatGetUploadInfo.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
wechatGetUploadInfo.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
String referer = "https://mp.weixin.qq.com/cgi-bin/appmsg?begin=0&count=10&t=media/appmsg_list&type=10&action=list&token="
+ userBean.getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
/*
begin 0
count 10
lang zh_CN
t media/list
token 1402799954
type 2
*/
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("token", userBean.getToken()));
paramList.add(new BasicNameValuePair("lang", "zh_CN"));
paramList.add(new BasicNameValuePair("begin", "0"));
paramList.add(new BasicNameValuePair("count", "10"));
paramList.add(new BasicNameValuePair("t", "media/list"));
paramList.add(new BasicNameValuePair("type", "2"));
String targetUrl = WECHAT_URL_GET_UPLOAD_INFO;
ResponseHolder responseHolder = httpGet(targetUrl, paramList, headerList);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
public interface WechatUploadFileCallBack {
public void onBack(int resultCode, String result);
}
public static void wechatUploadFile(
final WechatUploadFileCallBack wechatUploadFileCallBack,
final String filePath, final UserBean userBean, final String ticket) {
final Handler loadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case WECHAT_RESULT_MESSAGE_OK:
// 此处可以更新UI
ResultHolder resultHolder = (ResultHolder) msg.obj;
wechatUploadFileCallBack.onBack(msg.arg1, resultHolder.get("result")
);
break;
case WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
wechatUploadFileCallBack.onBack(msg.arg1, "timeOut");
break;
case WECHAT_RESULT_MESSAGE_ERROR_OTHER:
wechatUploadFileCallBack.onBack(msg.arg1, "other");
break;
}
}
};
new Thread() {
public void run() {
Looper.prepare();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
String referer = "https://mp.weixin.qq.com/cgi-bin/filepage?type=2&begin=0&count=10&t=media/list&token=" + userBean.getToken() + "&lang=zh_CN";
headerList
.add(new BasicNameValuePair("Referer",
referer));
headerList.add(new BasicNameValuePair("Cookie", "slave_sid="
+ userBean.getSlaveSid() + "; " + "slave_user="
+ userBean.getSlaveUser()));
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
/*
"https://mp.weixin.qq.com/cgi-bin/filetransfer?
action=upload_material
&f=json
&ticket_id=redbot
&ticket=a8332dff44d8d48172847c152e2d05c6c5e75997
&token=1402799954
&lang=zh_CN"*/
params.add(new BasicNameValuePair("action", "upload_material"));
params.add(new BasicNameValuePair("f", "json"));
params.add(new BasicNameValuePair("ticket_id", userBean.getUserName()));
params.add(new BasicNameValuePair("ticket", ticket));
params.add(new BasicNameValuePair("token", userBean.getToken()));
params.add(new BasicNameValuePair("lang", "zh_CN"));
ResponseHolder responseHolder = httpUploadFile(WECHAT_URL_UPLOAD_FILE, filePath, headerList,
params);
Message message = new Message();
ResultHolder resultHolder = new ResultHolder();
switch (responseHolder.responseType) {
case ResponseHolder.RESPONSE_TYPE_OK:
message.arg1 = WECHAT_RESULT_MESSAGE_OK;
try {
String strResult = EntityUtils.toString(responseHolder.response
.getEntity());
resultHolder.put("result", strResult);
message.obj = resultHolder;
} catch (Exception exception) {
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
}
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT;
break;
case ResponseHolder.RESPONSE_TYPE_ERROR_OTHER:
message.arg1 = WECHAT_RESULT_MESSAGE_ERROR_OTHER;
break;
}
loadHandler.sendMessage(message);
}
}.start();
}
private static ResponseHolder httpUploadFile(String targetUrl, String filePath,
ArrayList<NameValuePair> headerArrayList,
ArrayList<NameValuePair> paramsArrayList) {
//about url
for (int i = 0; i < paramsArrayList.size(); i++) {
NameValuePair nowPair = paramsArrayList.get(i);
if (i == 0) {
targetUrl += ("?" + nowPair.getName() + "=" + nowPair.getValue());
} else {
targetUrl += ("&" + nowPair.getName() + "=" + nowPair.getValue());
}
}
/* 建立HTTP Post联机 */
HttpPost httpRequest = new HttpPost(targetUrl);
/*
* Post运作传送变量必须用NameValuePair[]数组储存
*/
try {
//set entity
MultipartEntity multipartEntity = new MultipartEntity();
File uploadFile = new File(filePath);
FileBody fileBody = new FileBody(uploadFile);
String fileName = uploadFile.getName();
Log.e("upload file name", "" + fileName);
multipartEntity.addPart("Filename", new StringBody(fileName));
multipartEntity.addPart("folder", new StringBody("/cgi-bin/uploads"));
multipartEntity.addPart("file", fileBody);
multipartEntity.addPart("Upload", new StringBody("Submit Query"));
httpRequest.setEntity(multipartEntity);
for (int i = 0; i < headerArrayList.size(); i++) {
httpRequest.addHeader(headerArrayList.get(i).getName(),
headerArrayList.get(i).getValue());
}
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 100000);
HttpConnectionParams.setSoTimeout(httpParams, 30000);
HttpClient httpClient = new DefaultHttpClient(httpParams);
/* 取得HTTP response */
HttpResponse httpResponse = httpClient
.execute(httpRequest);
/* 若状态码为200 ok */
if (httpResponse.getStatusLine().getStatusCode() == 200) {
/* 取出响应字符串 */
return new ResponseHolder(ResponseHolder.RESPONSE_TYPE_OK, httpResponse);
} else {
Log.e("errorcode", httpResponse.getStatusLine().toString());
}
} catch (ClientProtocolException e) {
Log.e("upload client pro", "" + e);
e.printStackTrace();
} catch (IOException e) {
Log.e("upload io", "" + e);
e.printStackTrace();
if (e instanceof SocketTimeoutException || e instanceof javax.net.ssl.SSLPeerUnverifiedException) {
return new ResponseHolder(ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT, null);
}
} catch (Exception e) {
Log.e("upload ex", "" + e);
e.printStackTrace();
}
return new ResponseHolder(ResponseHolder.RESPONSE_TYPE_ERROR_OTHER, null);
}
private static ResponseHolder httpPost(String targetUrl,
ArrayList<NameValuePair> headerArrayList,
ArrayList<NameValuePair> paramsArrayList) {
HttpPost httpRequest = new HttpPost(targetUrl);
try {
httpRequest.setEntity(new UrlEncodedFormEntity(paramsArrayList,
HTTP.UTF_8));
for (int i = 0; i < headerArrayList.size(); i++) {
httpRequest.addHeader(headerArrayList.get(i).getName(),
headerArrayList.get(i).getValue());
}
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
HttpConnectionParams.setSoTimeout(httpParams, 10000);
HttpClient httpClient = new DefaultHttpClient(httpParams);
/* 取得HTTP response */
HttpResponse httpResponse = httpClient
.execute(httpRequest);
/* 若状态码为200 ok */
if (httpResponse.getStatusLine().getStatusCode() == 200) {
/* 取出响应字符串 */
return new ResponseHolder(ResponseHolder.RESPONSE_TYPE_OK, httpResponse);
} else {
Log.e("errorcode", httpResponse.getStatusLine().toString() + "|" + targetUrl + "|" + paramsArrayList.toString());
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
if (e instanceof SocketTimeoutException || e instanceof javax.net.ssl.SSLPeerUnverifiedException) {
return new ResponseHolder(ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT, null);
}
} catch (Exception e) {
e.printStackTrace();
}
return new ResponseHolder(ResponseHolder.RESPONSE_TYPE_ERROR_OTHER, null);
}
private static ResponseHolder httpGet(String targetUrl, ArrayList<NameValuePair> paramList,
ArrayList<NameValuePair> headerArrayList) {
for (int i = 0; i < paramList.size(); i++) {
NameValuePair nowPair = paramList.get(i);
String value = nowPair.getValue();
try{
value = URLEncoder.encode(value, "UTF-8");
}catch (Exception e){
}
if (i == 0) {
targetUrl += ("?" + nowPair.getName() + "=" + value);
} else {
targetUrl += ("&" + nowPair.getName() + "=" + value);
}
}
/* 声明网址字符串 */
/* 建立HTTP Post联机 */
HttpGet httpRequest = new HttpGet(targetUrl);
/*
* Post运作传送变量必须用NameValuePair[]数组储存
*/
try {
/* 发出HTTP request */
for (int i = 0; i < headerArrayList.size(); i++) {
httpRequest.addHeader(headerArrayList.get(i).getName(),
headerArrayList.get(i).getValue());
}
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
HttpConnectionParams.setSoTimeout(httpParams, 10000);
/* 取得HTTP response */
HttpClient httpClient = new DefaultHttpClient(httpParams);
HttpResponse httpResponse = httpClient.execute(httpRequest);
/* 若状态码为200 ok */
if (httpResponse.getStatusLine().getStatusCode() == 200) {
/* 取出响应字符串 */
return new ResponseHolder(ResponseHolder.RESPONSE_TYPE_OK, httpResponse);
} else {
Log.e("errorcode", httpResponse.getStatusLine().toString() + "|" + targetUrl + "|" + paramList.toString());
}
} catch (ClientProtocolException e) {
Log.e("wechat loader error",""+e);
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
if (e instanceof SocketTimeoutException || e instanceof javax.net.ssl.SSLPeerUnverifiedException) {
return new ResponseHolder(ResponseHolder.RESPONSE_TYPE_ERROR_TIME_OUT, null);
}
Log.e("wechat loader error",""+e);
} catch (Exception e) {
Log.e("wechat loader error",""+e);
e.printStackTrace();
}
return new ResponseHolder(ResponseHolder.RESPONSE_TYPE_ERROR_OTHER, null);
}
public static String getMD5Str(String str) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
System.out.println("NoSuchAlgorithmException caught!");
System.exit(-1);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] byteArray = messageDigest.digest();
StringBuffer md5StrBuff = new StringBuffer();
for (int i = 0; i < byteArray.length; i++) {
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
md5StrBuff.append("0").append(
Integer.toHexString(0xFF & byteArray[i]));
else
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
return md5StrBuff.toString();
}
public static class ResponseHolder {
public static final int RESPONSE_TYPE_OK = 2;
public static final int RESPONSE_TYPE_ERROR_TIME_OUT = 3;
public static final int RESPONSE_TYPE_ERROR_OTHER = 4;
int responseType;
HttpResponse response;
public ResponseHolder(int responseType, HttpResponse response) {
this.responseType = responseType;
this.response = response;
}
}
public static class ResultHolder {
private Map<String, String> content = new HashMap<String, String>();
private Map<String, Object> extra = new HashMap<String, Object>();
public void put(String key, String value) {
content.put(key, value);
}
public String get(String key) {
return content.get(key);
}
public void putExtra(String key, Object object) {
extra.put(key, object);
}
public Object getExtra(String key) {
return extra.get(key);
}
}
}