Skip to content

Instantly share code, notes, and snippets.

@suanmiao
Created January 11, 2015 14:14
Show Gist options
  • Save suanmiao/965cfd0f6c7057c1ddc4 to your computer and use it in GitHub Desktop.
Save suanmiao/965cfd0f6c7057c1ddc4 to your computer and use it in GitHub Desktop.
WeClient API Code Reference
/***
* 1.这是半年前的代码,因此有些Url有冗余,实现部分也有很冗余,主要参考的是url和实现部分的参数;
* 2.注意base url和path的概念
* 3.
***/
//URL
public static final String URL_LOGIN = "https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN";
public static final String URL_GET_MESSAGE_LIST = "https://mp.weixin.qq.com/cgi-bin/message";
public static final String URL_GET_NEW_MESSAGE_COUNT = "https://mp.weixin.qq.com/cgi-bin/getnewmsgnum";
public static final String URL_MESSAGE_LOAD_PAGE = "https://mp.weixin.qq.com/cgi-bin/message";
public static final String URL_MESSAGE_REPLY = "https://mp.weixin.qq.com/cgi-bin/singlesend";
public static final String URL_MESSAGE_STAR = "https://mp.weixin.qq.com/cgi-bin/setstarmessage";
public static final String URL_MESSAGE_MASS = "https://mp.weixin.qq.com/cgi-bin/masssend";
public static final String URL_GET_MESSAGE_PROFILE_IMG = "https://mp.weixin.qq.com/misc/getheadimg";
public static final String URL_GET_USER_PROFILE = "https://mp.weixin.qq.com/cgi-bin/home";
public static final String URL_GET_MASS_DATA = "https://mp.weixin.qq.com/cgi-bin/masssendpage";
public static final String URL_GET_MESSAGE_IMG = "https://mp.weixin.qq.com/cgi-bin/getimgdata";
public static final String URL_GET_VOICE_MESSAGE = "https://mp.weixin.qq.com/cgi-bin/getvoicedata";
public static final String URL_GET_VOICE_MESSAGE_REFERER = "https://mp.weixin.qq.com/mpres/zh_CN/htmledition/plprecorder/soundmanager2.swf";
public static final String URL_GET_APP_MSG_LIST = "https://mp.weixin.qq.com/cgi-bin/appmsg";
public static final String URL_GET_FANS_LIST = "https://mp.weixin.qq.com/cgi-bin/contactmanage";
public static final String URL_MODIFY_CONTACTS = "https://mp.weixin.qq.com/cgi-bin/modifycontacts";
public static final String URL_GET_CONTACT_INFO = "https://mp.weixin.qq.com/cgi-bin/getcontactinfo";
public static final String URL_GET_CHAT_LIST = "https://mp.weixin.qq.com/cgi-bin/singlesendpage";
public static final String URL_GET_REFRESH_CHAT_LIST = "https://mp.weixin.qq.com/cgi-bin/singlesendpage";
public static final String URL_CHAT_SINGLE_SEND = "https://mp.weixin.qq.com/cgi-bin/singlesend";
public static final String URL_GET_CHAT_NEW_ITEM = "https://mp.weixin.qq.com/cgi-bin/singlesendpage";
public static final String URL_GET_MATERIAL_LIST = "https://mp.weixin.qq.com/cgi-bin/filepage";
public static final String URL_GET_UPLOAD_INFO = "https://mp.weixin.qq.com/cgi-bin/filepage";
public static final String URL_UPLOAD_FILE = "https://mp.weixin.qq.com/cgi-bin/filetransfer";
public static final String URL_VERIFY = "https://mp.weixin.qq.com/cgi-bin/securesmsverify";
public static final String URL_VERIFY_PAGE = "https://mp.weixin.qq.com/cgi-bin/readtemplate";
public static final String URL_GET_IMGCODE = "https://mp.weixin.qq.com/cgi-bin/verifycode";
//Methods:
public void loginCurrent(String imgCode, String sig,
OnRequestSuccessListener<ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestFinishListener) {
UserBean nowBean = getCurrentUser();
if (nowBean != null) {
login(nowBean.getUserName(), nowBean.getPwd(), sig, imgCode,
onRequestSuccessListener, onRequestFinishListener);
} else {
onRequestFinishListener
.onError(RequestLoader.RESULT_MESSAGE_ERROR_OTHER);
}
}
public void login(String username, String pwd, String sig, String imgcode,
OnRequestSuccessListener<ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestFinishListener) {
String url = APIConstants.URL_LOGIN;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList
.add(new BasicNameValuePair("Referer",
"https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN"));
headerList.add(new BasicNameValuePair("Content-Type",
"text/html; charset=utf-8"));
if (sig != null && sig.length() > 0) {
headerList.add(new BasicNameValuePair("Cookie", "sig=" + sig));
}
paramList.add(new BasicNameValuePair("username", username));
paramList.add(new BasicNameValuePair("pwd", pwd));
paramList.add(new BasicNameValuePair("imgcode", imgcode));
paramList.add(new BasicNameValuePair("f", "json"));
RequestLoader.methodPost(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
Header[] headers = (Header[]) resultHolder
.getExtra("headers");
Log.e("login get header", ""+headers.toString());
String source = resultHolder.getResultString();
Log.e("login get result", ""+source);
LoginResultHolder loginResultHolder = ResultParser
.parseLogin(source, headers);
int parseCode = loginResultHolder.getParseCode();
resultHolder.setParseCode(parseCode);
resultHolder.putResult(loginResultHolder);
return resultHolder;
}
}, onRequestSuccessListener, onRequestFinishListener);
}
public void mass(final MaterialBean materialBean,
OnRequestSuccessListener<ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestFinishListener) {
String url = APIConstants.URL_MESSAGE_MASS;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add(new BasicNameValuePair("Referer",
"https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token="
+ getCurrentUser().getToken() + "&lang=zh_CN"));
addCommonHeader(headerList);
addCommonParam(paramList, true);
int type = materialBean.getType();
paramList.add(new BasicNameValuePair("type", type + ""));
Log.e("type", "" + type);
switch (type) {
case MaterialBean.MATERIAL_TYPE_TEXT:
paramList.add(new BasicNameValuePair("content", materialBean
.getContent()));
break;
case MaterialBean.MATERIAL_TYPE_IMG:
paramList.add(new BasicNameValuePair("fileid", materialBean
.getFile_id()));
break;
case MaterialBean.MATERIAL_TYPE_VOICE:
paramList.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);
paramList.add(new BasicNameValuePair("appmsgid", msgId));
}
break;
}
paramList.add(new BasicNameValuePair("sex", "0"));
paramList.add(new BasicNameValuePair("groupid", "-1"));
paramList.add(new BasicNameValuePair("synctxweibo", "0"));
paramList.add(new BasicNameValuePair("synctxnews", "0"));
paramList.add(new BasicNameValuePair("country", ""));
paramList.add(new BasicNameValuePair("province", ""));
paramList.add(new BasicNameValuePair("city", ""));
paramList.add(new BasicNameValuePair("imgcode", ""));
paramList.add(new BasicNameValuePair("f", "json"));
paramList.add(new BasicNameValuePair("ajax", "1"));
paramList.add(new BasicNameValuePair("t", "ajax-response"));
RequestLoader.methodPost(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
try {
JSONObject resultJsonObject = new JSONObject(source);
resultHolder.putResult(resultJsonObject);
resultHolder
.setParseCode(ResultParser.PARSE_SUCCESS);
} catch (Exception e) {
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestFinishListener);
// WeChatLoader.wechatMass(new WechatMassCallBack() {
//
// @Override
// public void onBack(int resultCode, String strResult) {
// // TODO Auto-generated method stub
// Log.e(" mass result", resultCode + "|" + strResult);
// switch (resultCode) {
//
// case WeChatLoader.WECHAT_RESULT_MESSAGE_OK:
//
// try {
// mDataManager.doLoadingEnd();
//
// JSONObject resultJsonObject = new JSONObject(strResult);
//
// if (resultJsonObject.get("ret") != null) {
//
// if (Integer.parseInt(resultJsonObject.get("ret")
// + "") == WeChatLoader.WECHAT_MASS_OK) {
// onActionFinishListener.onFinish(ACTION_SUCCESS,
// null);
//
// } else if (Integer.parseInt(resultJsonObject
// .get("ret") + "") == WeChatLoader.WECHAT_MASS_ERROR_ONLY_ONE) {
//
// Log.e("mass only ", "");
//
// mDataManager.doPopEnsureDialog(false, true,
// "哎呀", "每天只能群发一条哦~",
// new DialogSureClickListener() {
//
// @Override
// public void onClick(View v) {
// // TODO Auto-generated method
// // stub
// mDataManager
// .doDismissAllDialog();
//
// }
// });
// }
//
// } else {
// mDataManager.doLoadingEnd();
// }
// } catch (Exception exception) {
//
// Log.e("mass result parse exception", "" + exception);
// onActionFinishListener.onFinish(ACTION_OTHER, null);
// }
// break;
//
// case WeChatLoader.WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
//
// onActionFinishListener.onFinish(ACTION_TIME_OUT, null);
// break;
//
// case WeChatLoader.WECHAT_RESULT_MESSAGE_ERROR_OTHER:
//
// onActionFinishListener.onFinish(ACTION_OTHER, null);
// break;
//
// }
//
// }
// }, mDataManager.getCurrentUser(), materialBean);
}
public void getMassData(
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_MASS_DATA;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
UserBean currentBean = mDataManager.getCurrentUser();
headerList.add(new BasicNameValuePair("Referer",
APIConstants.URL_GET_USER_PROFILE + currentBean.getToken()));
/*
* 1 =
* "https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token=" ;
* 2 = "&lang=zh_CN";
*/
addCommonParam(paramList, false);
paramList.add(new BasicNameValuePair("t", "mass/send"));
RequestLoader.methodGet(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
int parseCode = ResultParser.parseMassData(source,
getCurrentUser());
resultHolder.setParseCode(parseCode);
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getMessageList(
final int offset,
final String keyword,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_MESSAGE_LIST;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
/*
* 1 =
* "https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token=" ;
* 2 = "&lang=zh_CN";
*/
addCommonParam(paramList, false);
paramList.add(new BasicNameValuePair("t", "message/list"));
paramList.add(new BasicNameValuePair("count", "20"));
if (keyword != null && keyword.length() > 0) {
paramList.add(new BasicNameValuePair("action", "search"));
paramList.add(new BasicNameValuePair("keyword", keyword));
} else {
if (offset != 0) {
paramList.add(new BasicNameValuePair("frommsgid",
getCurrentMessageHolder().getLatestMsgId()));
paramList.add(new BasicNameValuePair("offset", offset + ""));
}
boolean hideKeyWordMessage = mConfigManager.getHideKeyWordMessage();
int hideKeyWord = hideKeyWordMessage ? 1 : 0;
switch (getCurrentMessageHolder().getNowMessageMode()) {
case APIConstants.MESSAGE_MODE_ALL:
paramList.add(new BasicNameValuePair("filterivrmsg",
hideKeyWord + ""));
paramList.add(new BasicNameValuePair("day", "7"));
break;
case APIConstants.MESSAGE_MODE_TODAY:
paramList.add(new BasicNameValuePair("filterivrmsg",
hideKeyWord + ""));
paramList.add(new BasicNameValuePair("day", "0"));
break;
case APIConstants.MESSAGE_MODE_YESTERDAY:
paramList.add(new BasicNameValuePair("filterivrmsg",
hideKeyWord + ""));
paramList.add(new BasicNameValuePair("day", "1"));
break;
case APIConstants.MESSAGE_MODE_DAY_BEFORE:
paramList.add(new BasicNameValuePair("filterivrmsg",
hideKeyWord + ""));
paramList.add(new BasicNameValuePair("day", "2"));
break;
case APIConstants.MESSAGE_MODE_OLDER:
paramList.add(new BasicNameValuePair("day", "3"));
break;
case APIConstants.MESSAGE_MODE_STAR:
paramList.add(new BasicNameValuePair("filterivrmsg",
hideKeyWord + ""));
paramList.add(new BasicNameValuePair("action", "star"));
break;
}
}
// Log.e("get message ", "url |"+url);
// Log.e("get message ", "param |"+paramList.toString());
// Log.e("get message ", "header |"+headerList.toString());
RequestLoader.methodGet(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
String referer = resultHolder.getRefererString();
boolean addDataItem = true;
if (keyword != null && keyword.length() > 0) {
addDataItem = false;
}
MessageResultHolder messageResultHolder = ResultParser
.parseMessage(source, getCurrentUser(),
getCurrentMessageHolder()
.getNowMessageMode(), offset,
addDataItem, referer);
resultHolder.putExtra("messageResultHolder",
messageResultHolder);
resultHolder.setParseCode(messageResultHolder
.getParseCode());
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getUserProfile(
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_USER_PROFILE;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
/*
* PROFILE =
* "https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token="
* ;
*/
paramList.add(new BasicNameValuePair("t", "home/index"));
addCommonParam(paramList, false);
// Log.e("get user profile", "url :" + url);
// Log.e("get user profile", "param :" + paramList.toString());
// Log.e("get user profile", "url :" + headerList.toString());
RequestLoader.methodGet(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
int parseCode = ResultParser.parseUserProfile(source,
getCurrentUser());
resultHolder.setParseCode(parseCode);
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getFansList(
final int page,
final String groupId,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_FANS_LIST;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
UserBean currentBean = getCurrentUser();
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="
+ currentBean.getToken();
} else {
referer = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=10&pageidx=0&type=0&token="
+ currentBean.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="
+ currentBean.getToken() + "&lang=zh_CN";
}
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonParam(paramList, false);
/*
* 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";
*/
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));
}
RequestLoader.methodGet(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
String referer = resultHolder.getRefererString();
FansResultHolder fansResultHolder = ResultParser
.parseFansList(source, referer,
getCurrentFansHolder()
.getCurrentGroupId(),
getCurrentUser(), page);
resultHolder.putExtra("fansResultHolder",
fansResultHolder);
resultHolder.setParseCode(fansResultHolder
.getParseCode());
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getFansProfile(
final String fakeId,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_CONTACT_INFO;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
String referer = "https://mp.weixin.qq.com/cgi-bin/message?t=message/list&count=20&day=7&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonParam(paramList, true);
paramList.add(new BasicNameValuePair("ajax", "1"));
paramList.add(new BasicNameValuePair("f", "json"));
paramList.add(new BasicNameValuePair("fakeid", fakeId));
paramList.add(new BasicNameValuePair("t", "ajax-getcontactinfo"));
RequestLoader.methodPost(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
FansProfileHolder fansProfileHolder = ResultParser
.parseFansProfile(source, getCurrentUser());
resultHolder.putExtra("fansProfile", fansProfileHolder);
resultHolder.setParseCode(fansProfileHolder
.getParseCode());
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getChatList(
final String toFakeId,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_CHAT_LIST;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
String referer = "https://mp.weixin.qq.com/cgi-bin/message?t=message/list&count=20&day=7&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonParam(paramList, true);
paramList.add(new BasicNameValuePair("tofakeid", toFakeId));
paramList.add(new BasicNameValuePair("t", "message/send"));
paramList.add(new BasicNameValuePair("action", "index"));
RequestLoader.methodGet(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
String referer = resultHolder.getRefererString();
ChatResultHolder chatResultHolder = ResultParser
.parseChatList(source, toFakeId);
resultHolder.putExtra("chatResultHolder",
chatResultHolder);
resultHolder.setParseCode(chatResultHolder
.getParseCode());
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void singleChat(
final MessageBean messageBean,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_CHAT_SINGLE_SEND;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
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="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonHeader(headerList);
addCommonParam(paramList, true);
paramList
.add(new BasicNameValuePair("type", messageBean.getType() + ""));
paramList.add(new BasicNameValuePair("content", messageBean
.getContent()));
paramList.add(new BasicNameValuePair("tofakeid", ""
+ messageBean.getToFakeId()));
paramList.add(new BasicNameValuePair("imgcode", ""));
paramList.add(new BasicNameValuePair("f", "json"));
paramList.add(new BasicNameValuePair("ajax", "1"));
paramList.add(new BasicNameValuePair("t", "ajax-response"));
// Log.e("single chat", "url |"+url);
// Log.e("single chat", "param |"+paramList.toString());
// Log.e("single chat", "header |"+headerList.toString());
RequestLoader.methodPost(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void refreshChatList(
final String toFakeId,
String lastMsgFromFakeId,
String lastMsgId,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_REFRESH_CHAT_LIST;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
String referer = "https://mp.weixin.qq.com/cgi-bin/singlesendpage?tofakeid="
+ toFakeId
+ "&t=message/send&action=index&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonParam(paramList, true);
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", ""
+ lastMsgFromFakeId));
paramList.add(new BasicNameValuePair("lastmsgid", lastMsgId));
String time = System.currentTimeMillis() + "";
if (time.length() > 10) {
time = time.substring(0, 10);
}
paramList.add(new BasicNameValuePair("createtime", time));
Log.e("last msg id", "" + lastMsgId);
RequestLoader.methodGet(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
String referer = resultHolder.getRefererString();
// Log.e("get refresh list", "" + source);
ChatResultHolder chatResultHolder = ResultParser
.parseRefreshChatList(source, toFakeId);
resultHolder.putResult(chatResultHolder);
resultHolder.setParseCode(chatResultHolder
.getParseCode());
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getMessageHeadImg(
final String fakeId,
final String referer,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_MESSAGE_PROFILE_IMG;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
headerList.add(new BasicNameValuePair("Referer", referer));
/*
* 1 = "https://mp.weixin.qq.com/cgi-bin/getheadimg?token="; 2 =
* "&fakeid=";
*/
addCommonParam(paramList, false);
paramList.add(new BasicNameValuePair("fakeid", fakeId));
String key = "userImg" + fakeId;
Bitmap localBitmap = mImageCacheManager.getBitmap(key);
if (localBitmap != null) {
ResultHolder<Bitmap> resultHolder = new ResultHolder<Bitmap>();
resultHolder.putBitmap(localBitmap);
onRequestSuccessListener.onFinish(resultHolder);
return;
}
RequestLoader.methodGetImg(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
if (resultHolder.getBitmap() != null) {
String key = "userImg" + fakeId;
mImageCacheManager.putBitmap(key,
resultHolder.getBitmap(), true);
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getMessageImg(
final MessageBean messageBean,
final String imgType,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_MESSAGE_IMG;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
headerList.add(new BasicNameValuePair("Referer", messageBean
.getReferer()));
/*
* 1 = "https://mp.weixin.qq.com/cgi-bin/getimgdata?token="; 2 =
* "&msgid="; 3 = "&mode="; 4 = "&source=&fileId=0";
*/
addCommonParam(paramList, false);
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()));
String key = "messageImg" + messageBean.getId();
Bitmap localBitmap = mImageCacheManager.getBitmap(key);
if (localBitmap != null) {
ResultHolder<Bitmap> resultHolder = new ResultHolder<Bitmap>();
resultHolder.putBitmap(localBitmap);
onRequestSuccessListener.onFinish(resultHolder);
return;
}
RequestLoader.methodGetImg(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
if (resultHolder.getBitmap() != null) {
String key = "messageImg" + messageBean.getId();
mImageCacheManager.putBitmap(key,
resultHolder.getBitmap(), true);
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getMessageVoice(
final MessageBean messageBean,
final int length,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_VOICE_MESSAGE;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
headerList.add(new BasicNameValuePair("Referer",
APIConstants.URL_GET_VOICE_MESSAGE_REFERER));
addCommonParam(paramList, false);
/*
* 1 = "https://mp.weixin.qq.com/cgi-bin/getvoicedata?msgid="; 2 =
* "&fileid=&token="; 3 = "&lang=zh_CN";
*/
paramList.add(new BasicNameValuePair("msgid", messageBean.getId()));
paramList.add(new BasicNameValuePair("fileid", ""));
paramList
.add(new BasicNameValuePair("source", messageBean.getSource()));
String key = "messageVoice" + messageBean.getId();
byte[] localData = mImageCacheManager.getBytes(key);
if (localData != null) {
ResultHolder<byte[]> resultHolder = new ResultHolder<byte[]>();
resultHolder.putBytes(localData);
onRequestSuccessListener.onFinish(resultHolder);
return;
}
RequestLoader.methodGetBytes(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
if (resultHolder.getBytes() != null) {
String key = "messageVoice" + messageBean.getId();
mImageCacheManager.putBytes(key,
resultHolder.getBytes(), true);
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void reply(
MessageBean messageBean,
String replyContent,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_MESSAGE_REPLY;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
// asChrome(headerList);
String referer = "https://mp.weixin.qq.com/cgi-bin/message?t=message/list&count=20&day=7&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonParam(paramList, true);
paramList.add(new BasicNameValuePair("mask", "false"));
paramList.add(new BasicNameValuePair("tofakeid", messageBean
.getFakeId()));
paramList.add(new BasicNameValuePair("imgcode", ""));
paramList.add(new BasicNameValuePair("type", "1"));
paramList.add(new BasicNameValuePair("content", replyContent));
paramList.add(new BasicNameValuePair("quickreplyid", messageBean
.getId()));
paramList.add(new BasicNameValuePair("f", "json"));
paramList.add(new BasicNameValuePair("ajax", "1"));
paramList.add(new BasicNameValuePair("t", "ajax-response"));
// Log.e("reply", "url |" + url);
// Log.e("reply", "param |" + paramList.toString());
// Log.e("reply", "header |" + headerList.toString());
RequestLoader.methodPost(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
// FansProfileHolder fansProfileHolder = ResultParser
// .parseFansProfile(source, getCurrentUser());
// resultHolder.putExtra("fansProfile",
// fansProfileHolder);
// resultHolder.setParseCode(fansProfileHolder
// .getParseCode());
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void star(
MessageBean messageBean,
boolean star,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_MESSAGE_STAR;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
String referer = "https://mp.weixin.qq.com/cgi-bin/message?t=message/list&count=20&day=7&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
paramList.add(new BasicNameValuePair("msgid", messageBean.getId()));
addCommonParam(paramList, true);
if (star) {
paramList.add(new BasicNameValuePair("value", "1"));
} else {
paramList.add(new BasicNameValuePair("value", "0"));
}
paramList.add(new BasicNameValuePair("f", "json"));
paramList.add(new BasicNameValuePair("ajax", "1"));
paramList.add(new BasicNameValuePair("t", "ajax-setstarmessage"));
// Log.e("star ", "url |" + star);
// Log.e("star ", "params |" + paramList.toString());
// Log.e("star ", "header |" + headerList.toString());
RequestLoader.methodPost(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
// FansProfileHolder fansProfileHolder = ResultParser
// .parseFansProfile(source, getCurrentUser());
// resultHolder.putExtra("fansProfile",
// fansProfileHolder);
// resultHolder.setParseCode(fansProfileHolder
// .getParseCode());
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void modifyContacts(
final int action,
final String toFakeId,
final String groupId,
final String remark,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_MODIFY_CONTACTS;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
String referer = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=10&pageidx=0&type=0&groupid=0&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonParam(paramList, true);
paramList.add(new BasicNameValuePair("ajax", "1"));
paramList.add(new BasicNameValuePair("f", "json"));
switch (action) {
case APIConstants.MODIFY_CONTACTS_ACTION_MODIFY:
paramList.add(new BasicNameValuePair("action", "modifycontacts"));
paramList.add(new BasicNameValuePair("t", "ajax-putinto-group"));
paramList.add(new BasicNameValuePair("contacttype", groupId));
paramList.add(new BasicNameValuePair("tofakeidlist", toFakeId));
break;
case APIConstants.MODIFY_CONTACTS_ACTION_REMARK:
paramList.add(new BasicNameValuePair("action", "setremark"));
paramList.add(new BasicNameValuePair("t", "ajax-response"));
paramList.add(new BasicNameValuePair("remark", remark));
paramList.add(new BasicNameValuePair("tofakeuin", toFakeId));
break;
}
// Log.e("modify contact", "url |"+url);
// Log.e("modify contact", "param |"+paramList.toString());
// Log.e("modify contact", "header |"+headerList.toString());
RequestLoader.methodPost(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
resultHolder.setParseCode(ResultParser.PARSE_FAILED);
try {
Log.e("edit result", source);
JSONObject resultJsonObject = new JSONObject(source);
if (resultJsonObject.get("ret") != null) {
if (Integer.parseInt(resultJsonObject
.get("ret") + "") == StateConstants.WECHAT_MODIFY_CONTACT_OK) {
resultHolder
.setParseCode(ResultParser.PARSE_SUCCESS);
}
}
} catch (Exception exception) {
Log.e("modify result parse error", "" + exception);
}
// try {
//
// JSONObject resultJsonObject = new JSONObject(source);
//
// } catch (Exception exception) {
// Log.e("star result parse error", "" + exception);
//
// }
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getImgCode(
final String username,
final String r,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_IMGCODE;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
/*
* 1 = "https://mp.weixin.qq.com/cgi-bin/getheadimg?token="; 2 =
* "&fakeid=";
*/
paramList.add(new BasicNameValuePair("username", username));
paramList.add(new BasicNameValuePair("r", r));
RequestLoader.methodGetImg(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
if (resultHolder.getBitmap() != null) {
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getUserHeadImg(
final String fakeId,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_MESSAGE_PROFILE_IMG;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
headerList.add(new BasicNameValuePair("Referer",
"https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token="
+ getCurrentUser().getToken()));
/*
* 1 = "https://mp.weixin.qq.com/cgi-bin/getheadimg?token="; 2 =
* "&fakeid=";
*/
addCommonParam(paramList, false);
paramList.add(new BasicNameValuePair("fakeid", fakeId));
String key = "userImg" + fakeId;
Bitmap localBitmap = mImageCacheManager.getBitmap(key);
if (localBitmap != null) {
ResultHolder<Bitmap> resultHolder = new ResultHolder<Bitmap>();
resultHolder.putBitmap(localBitmap);
onRequestSuccessListener.onFinish(resultHolder);
return;
}
RequestLoader.methodGetImg(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
if (resultHolder.getBitmap() != null) {
String key = "userImg" + fakeId;
mImageCacheManager.putBitmap(key,
resultHolder.getBitmap(), true);
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
/*
*
*/
public void getMaterialVoice(
final MaterialBean materialBean,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_VOICE_MESSAGE;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
String referer = "https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonParam(paramList, false);
paramList.add(new BasicNameValuePair("msgid", ""));
paramList.add(new BasicNameValuePair("fileid", materialBean
.getFile_id()));
paramList.add(new BasicNameValuePair("source", "file"));
String key = "materialVoice" + materialBean.getFile_id();
byte[] localData = mImageCacheManager.getBytes(key);
if (localData != null) {
ResultHolder<byte[]> resultHolder = new ResultHolder<byte[]>();
resultHolder.putBytes(localData);
onRequestSuccessListener.onFinish(resultHolder);
return;
}
RequestLoader.methodGetBytes(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
if (resultHolder.getBytes() != null) {
String key = "materialVoice"
+ materialBean.getFile_id();
mImageCacheManager.putBytes(key,
resultHolder.getBytes(), true);
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getMaterialImg(
final MaterialBean materialBean,
final String imgType,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_MESSAGE_IMG;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
addCommonHeader(headerList);
String referer = "Referer:https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
/*
* 1 = "https://mp.weixin.qq.com/cgi-bin/getimgdata?token="; 2 =
* "&msgid="; 3 = "&mode="; 4 = "&source=&fileId=0";
*/
paramList.add(new BasicNameValuePair("token", getCurrentUser()
.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"));
String key = "materialImg" + materialBean.getFile_id();
Bitmap localBitmap = mImageCacheManager.getBitmap(key);
if (localBitmap != null) {
ResultHolder<Bitmap> resultHolder = new ResultHolder<Bitmap>();
resultHolder.putBitmap(localBitmap);
onRequestSuccessListener.onFinish(resultHolder);
return;
}
RequestLoader.methodGetImg(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
if (resultHolder.getBitmap() != null) {
String key = "materialImg"
+ materialBean.getFile_id();
mImageCacheManager.putBitmap(key,
resultHolder.getBitmap(), true);
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getMaterialList(
final int type,
final int begin,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_MATERIAL_LIST;
if (type == APIConstants.MATERIAL_TYPE_APP) {
url = APIConstants.URL_GET_APP_MSG_LIST;
}
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
String referer = "https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonHeader(headerList);
/*
* 1 =
* "https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token=" ;
* 2 = "&lang=zh_CN";
*/
addCommonParam(paramList, true);
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"));
if (type == 10) {
paramList.add(new BasicNameValuePair("action", "list"));
}
RequestLoader.methodGet(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
String referer = resultHolder.getRefererString();
switch (type) {
case APIConstants.MATERIAL_TYPE_APP:
{
MaterialResultHolder materialResultHolder = ResultParser
.parseAppMsgList(begin, source,
getCurrentUser(), referer);
resultHolder.putResult(materialResultHolder);
resultHolder.setParseCode(materialResultHolder
.getParseCode());
}
break;
default:
{
MaterialResultHolder materialResultHolder = ResultParser
.parseMaterialList(begin, source,
getCurrentUser(), referer);
resultHolder.putResult(materialResultHolder);
resultHolder.setParseCode(materialResultHolder
.getParseCode());
}
break;
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getNewMessageCount(
final String lastMsgId,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_NEW_MESSAGE_COUNT;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
String referer = "https://mp.weixin.qq.com/cgi-bin/message?t=message/list&count=20&day=7&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonHeader(headerList);
addCommonParam(paramList, true);
paramList.add(new BasicNameValuePair("ajax", "1"));
paramList.add(new BasicNameValuePair("f", "json"));
paramList.add(new BasicNameValuePair("lastmsgid", lastMsgId));
paramList.add(new BasicNameValuePair("t", "ajax-getmsgnum"));
// Log.e("get new msg count", "url |"+url);
// Log.e("get new msg count", "param |"+paramList.toString());
// Log.e("get new msg count", "header |"+headerList.toString());
RequestLoader.methodPost(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
// Log.e("get new msg count", "" + source);
try {
JSONObject resultJsonObject = new JSONObject(source);
resultHolder
.setParseCode(ResultParser.PARSE_SUCCESS);
} catch (Exception exception) {
Log.e("get new msg count result parse error", ""
+ exception);
resultHolder
.setParseCode(ResultParser.PARSE_FAILED);
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
}
public void getUploadInfo(
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_GET_UPLOAD_INFO;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
ArrayList<NameValuePair> headerList = new ArrayList<NameValuePair>();
String referer = "https://mp.weixin.qq.com/cgi-bin/appmsg?begin=0&count=10&t=media/appmsg_list&type=10&action=list&token="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonHeader(headerList);
addCommonParam(paramList, false);
/*
*
* begin 0 count 10 lang zh_CN t media/list token 1402799954 type 2
*/
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"));
RequestLoader.methodGet(url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String source = resultHolder.getResultString();
String referer = resultHolder.getRefererString();
int parseCode = ResultParser.parseUploadInfo(source,
mDataManager.getCurrentMessageHolder()
.getUploadHelper());
resultHolder.setParseCode(parseCode);
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
// WeChatLoader.wechatGetUploadInfo(
// new WeChatLoader.WechatGetUploadInfo() {
// @Override
// public void onBack(int resultCode, String strResult) {
//
// switch (resultCode) {
// case WeChatLoader.WECHAT_RESULT_MESSAGE_OK:
//
// DataParser.parseUploadInfo(new DataParser.UploadInfoParseCallBack() {
// @Override
// public void onBack(int code) {
// if (code == DataParser.PARSE_SUCCESS) {
// onActionFinishListener.onFinish(ACTION_SUCCESS, null);
//
// Log.e("parse upload info success", "success");
//
// }
//
// }
// }, strResult, mDataManager.getMessageHolders().get(userIndex)
// .getUploadHelper());
// break;
//
// case WeChatLoader.WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
//
// onActionFinishListener.onFinish(ACTION_TIME_OUT,
// null);
// break;
//
// case WeChatLoader.WECHAT_RESULT_MESSAGE_ERROR_OTHER:
//
// onActionFinishListener.onFinish(ACTION_OTHER, null);
// break;
//
// }
// }
// }, mDataManager.getUserGroup().get(userIndex));
}
public void uploadFile(
final String filePath,
OnRequestSuccessListener<RequestLoader.ResultHolder> onRequestSuccessListener,
OnRequestErrorListener onRequestErrorListener) {
String url = APIConstants.URL_UPLOAD_FILE;
ArrayList<NameValuePair> paramList = new ArrayList<NameValuePair>();
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="
+ getCurrentUser().getToken() + "&lang=zh_CN";
headerList.add(new BasicNameValuePair("Referer", referer));
addCommonHeader(headerList);
addCommonParam(paramList, false);
/*
* "https://mp.weixin.qq.com/cgi-bin/filetransfer?
* action=upload_material &f=json &ticket_id=redbot
* &ticket=a8332dff44d8d48172847c152e2d05c6c5e75997 &token=1402799954
* &lang=zh_CN"
*/
paramList.add(new BasicNameValuePair("action", "upload_material"));
paramList.add(new BasicNameValuePair("f", "json"));
paramList.add(new BasicNameValuePair("ticket_id", getCurrentUser()
.getUserName()));
paramList.add(new BasicNameValuePair("ticket", mDataManager
.getCurrentMessageHolder().getUploadHelper().getTicket()));
RequestLoader.methodUploadFile(filePath, url, headerList, paramList,
new ResultParseListener() {
@Override
public ResultHolder onParse(ResultHolder resultHolder) {
// TODO Auto-generated method stub
String result = resultHolder.getResultString();
resultHolder.setParseCode(ResultParser.PARSE_FAILED);
try {
JSONObject resultObject = new JSONObject(result);
JSONObject retObject = resultObject
.getJSONObject("base_resp");
int ret = DataParser.getRet(retObject);
if (ret == 0) {
UploadHelper.NowUploadBean nowUploadBean = DataParser
.getObjectFromJson(
result,
UploadHelper.NowUploadBean.class);
mDataManager.getCurrentMessageHolder()
.getUploadHelper()
.setNowUploadBean(nowUploadBean);
resultHolder.putResult(nowUploadBean);
resultHolder
.setParseCode(ResultParser.PARSE_SUCCESS);
// mDataManager.getMessageHolders().get(mDataManager.getcu)
// .getUploadHelper()
// .setNowUploadBean(nowUploadBean);
}
} catch (Exception e) {
}
return resultHolder;
}
}, onRequestSuccessListener, onRequestErrorListener);
// WeChatLoader.wechatUploadFile(
// new WeChatLoader.WechatUploadFileCallBack() {
// @Override
// public void onBack(int resultCode, String result) {
//
// switch (resultCode) {
// case WeChatLoader.WECHAT_RESULT_MESSAGE_OK:
//
// //
// {"base_resp":{"ret":0,"err_msg":"ok"},"location":"bizfile","type":"image","content":"200009060"}
// try {
//
// JSONObject resultObject = new JSONObject(result);
// JSONObject retObject = resultObject
// .getJSONObject("base_resp");
// int ret = DataParser.getRet(retObject);
// if (ret == 0) {
// UploadHelper.NowUploadBean nowUploadBean = DataParser
// .getObjectFromJson(
// result,
// UploadHelper.NowUploadBean.class);
//
// mDataManager.getMessageHolders()
// .get(userIndex).getUploadHelper()
// .setNowUploadBean(nowUploadBean);
// onActionFinishListener.onFinish(
// ACTION_SUCCESS, nowUploadBean);
//
// }
//
// return;
// } catch (Exception e) {
//
// }
// onActionFinishListener.onFinish(ACTION_OTHER, null);
//
// break;
//
// case WeChatLoader.WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT:
//
// onActionFinishListener.onFinish(ACTION_TIME_OUT,
// null);
// break;
//
// case WeChatLoader.WECHAT_RESULT_MESSAGE_ERROR_OTHER:
//
// onActionFinishListener.onFinish(ACTION_OTHER, null);
// break;
//
// }
// }
// }, filePath, mDataManager.getUserGroup().get(userIndex),
// mDataManager.getMessageHolders().get(userIndex)
// .getUploadHelper().getTicket());
}
private UserBean getCurrentUser() {
return mDataManager.getCurrentUser();
}
private MessageHolder getCurrentMessageHolder() {
return mDataManager.getCurrentMessageHolder();
}
private FansHolder getCurrentFansHolder() {
return mDataManager.getCurrentFansHolder();
}
private void addCommonParam(ArrayList<NameValuePair> paramArrayList,
boolean random) {
UserBean currentUser = mDataManager.getCurrentUser();
if (currentUser != null) {
paramArrayList.add(new BasicNameValuePair("token", currentUser
.getToken()));
paramArrayList.add(new BasicNameValuePair("lang", "zh_CN"));
if (random) {
paramArrayList.add(new BasicNameValuePair("random", Util
.getRandomFloat(16)));
}
}
}
private void addCommonHeader(ArrayList<NameValuePair> headerArrayList) {
UserBean currentUser = mDataManager.getCurrentUser();
if (currentUser != null) {
headerArrayList.add(new BasicNameValuePair("Cookie",
getCurrentUser().getCookie()));
// headerArrayList.add(new BasicNameValuePair("Cookie", "slave_sid="
// + currentUser.getSlaveSid() + "; " + "slave_user="
// + currentUser.getSlaveUser()));
}
}
private void asChrome(ArrayList<NameValuePair> headerArrayList) {
headerArrayList.add(new BasicNameValuePair("Accept",
"application/json, text/javascript, */*; q=0.01"));
headerArrayList.add(new BasicNameValuePair("Accept-Encoding",
"gzip,deflate,sdch"));
headerArrayList.add(new BasicNameValuePair("Accept-Language",
"zh-CN,zh;q=0.8"));
headerArrayList.add(new BasicNameValuePair("Connection", "keep-alive"));
headerArrayList.add(new BasicNameValuePair("Content-Type",
"application/x-www-form-urlencoded; charset=UTF-8"));
// headerArrayList.add(new BasicNameValuePair("Content-Length", "188"));
headerArrayList.add(new BasicNameValuePair("Host", "mp.weixin.qq.com"));
headerArrayList.add(new BasicNameValuePair("Origin",
"https://mp.weixin.qq.com"));
headerArrayList
.add(new BasicNameValuePair(
"User-Agent",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36"));
headerArrayList.add(new BasicNameValuePair("X-Requested-With",
"XMLHttpRequest"));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment