比较大的改动:重构了HttpClient部分

This commit is contained in:
jinyu
2015-08-18 22:18:09 +08:00
parent 7e054be6fa
commit dd186abd09
120 changed files with 4042 additions and 1541 deletions
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<groupId>com.foxinmy</groupId>
<artifactId>weixin4j</artifactId>
<version>1.5.3</version>
<version>1.5.4-SNAPSHOT</version>
</parent>
<artifactId>weixin4j-mp</artifactId>
<name>weixin4j-mp</name>
@@ -71,7 +71,7 @@ public class CustomApi extends MpApi {
obj.put("pageindex", pageindex);
String custom_record_uri = getRequestUri("custom_record_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(custom_record_uri, token.getAccessToken()),
obj.toJSONString());
@@ -101,12 +101,12 @@ public class CustomApi extends MpApi {
String text = "";
if (isOnline) {
String getonlinekflist_uri = getRequestUri("getonlinekflist_uri");
WeixinResponse response = weixinClient.get(String.format(getonlinekflist_uri,
WeixinResponse response = weixinExecutor.get(String.format(getonlinekflist_uri,
token.getAccessToken()));
text = response.getAsJson().getString("kf_online_list");
} else {
String getkflist_uri = getRequestUri("getkflist_uri");
WeixinResponse response = weixinClient.get(String.format(getkflist_uri,
WeixinResponse response = weixinExecutor.get(String.format(getkflist_uri,
token.getAccessToken()));
text = response.getAsJson().getString("kf_list");
}
@@ -138,7 +138,7 @@ public class CustomApi extends MpApi {
obj.put("password", DigestUtil.MD5(pwd));
String custom_add_uri = getRequestUri("custom_add_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(custom_add_uri, token.getAccessToken()),
obj.toJSONString());
return response.getAsJsonResult();
@@ -169,7 +169,7 @@ public class CustomApi extends MpApi {
obj.put("password", DigestUtil.MD5(pwd));
String custom_update_uri = getRequestUri("custom_update_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(custom_update_uri, token.getAccessToken()),
obj.toJSONString());
return response.getAsJsonResult();
@@ -195,7 +195,7 @@ public class CustomApi extends MpApi {
Token token = tokenHolder.getToken();
String custom_uploadheadimg_uri = getRequestUri("custom_uploadheadimg_uri");
byte[] bytes = IOUtil.toByteArray(new FileInputStream(headimg));
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(custom_uploadheadimg_uri, token.getAccessToken(),
id),
new FormBodyPart("media", new ByteArrayBody(bytes, headimg
@@ -219,7 +219,7 @@ public class CustomApi extends MpApi {
public JsonResult deleteAccount(String id) throws WeixinException {
Token token = tokenHolder.getToken();
String custom_delete_uri = getRequestUri("custom_delete_uri");
WeixinResponse response = weixinClient.get(String.format(custom_delete_uri,
WeixinResponse response = weixinExecutor.get(String.format(custom_delete_uri,
token.getAccessToken(), id));
return response.getAsJsonResult();
@@ -251,7 +251,7 @@ public class CustomApi extends MpApi {
obj.put("openid", userOpenId);
obj.put("kf_account", kfAccount);
obj.put("text", text);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(kfsession_create_uri, token.getAccessToken()),
obj.toJSONString());
@@ -280,7 +280,7 @@ public class CustomApi extends MpApi {
obj.put("openid", userOpenId);
obj.put("kf_account", kfAccount);
obj.put("text", text);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(kfsession_close_uri, token.getAccessToken()),
obj.toJSONString());
@@ -301,7 +301,7 @@ public class CustomApi extends MpApi {
public KfSession getKfSession(String userOpenId) throws WeixinException {
Token token = tokenHolder.getToken();
String kfsession_get_uri = getRequestUri("kfsession_get_uri");
WeixinResponse response = weixinClient.get(String.format(kfsession_get_uri,
WeixinResponse response = weixinExecutor.get(String.format(kfsession_get_uri,
token.getAccessToken(), userOpenId));
KfSession session = response
@@ -326,7 +326,7 @@ public class CustomApi extends MpApi {
throws WeixinException {
Token token = tokenHolder.getToken();
String kfsession_list_uri = getRequestUri("kfsession_list_uri");
WeixinResponse response = weixinClient.get(String.format(kfsession_list_uri,
WeixinResponse response = weixinExecutor.get(String.format(kfsession_list_uri,
token.getAccessToken(), kfAccount));
List<KfSession> sessionList = JSON.parseArray(response.getAsJson()
@@ -346,7 +346,7 @@ public class CustomApi extends MpApi {
public List<KfSession> listKfSessionWait() throws WeixinException {
Token token = tokenHolder.getToken();
String kfsession_wait_uri = getRequestUri("kfsession_wait_uri");
WeixinResponse response = weixinClient.get(String.format(kfsession_wait_uri,
WeixinResponse response = weixinExecutor.get(String.format(kfsession_wait_uri,
token.getAccessToken()));
List<KfSession> sessionList = JSON.parseArray(response.getAsJson()
@@ -123,7 +123,7 @@ public class DataApi extends MpApi {
JSONObject obj = new JSONObject();
obj.put("begin_date", DateUtil.fortmat2yyyy_MM_dd(beginDate));
obj.put("end_date", DateUtil.fortmat2yyyy_MM_dd(endDate));
WeixinResponse response = weixinClient.post(String.format(datacube_uri,
WeixinResponse response = weixinExecutor.post(String.format(datacube_uri,
datacubeType.name().toLowerCase(), token.getAccessToken()), obj
.toJSONString());
@@ -46,7 +46,7 @@ public class GroupApi extends MpApi {
String group_create_uri = getRequestUri("group_create_uri");
Token token = tokenHolder.getToken();
Group group = new Group(name);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(group_create_uri, token.getAccessToken()),
group.toCreateJson());
@@ -65,7 +65,7 @@ public class GroupApi extends MpApi {
public List<Group> getGroups() throws WeixinException {
String group_get_uri = getRequestUri("group_get_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.get(String.format(group_get_uri,
WeixinResponse response = weixinExecutor.get(String.format(group_get_uri,
token.getAccessToken()));
return JSON.parseArray(response.getAsJson().getString("groups"),
@@ -86,7 +86,7 @@ public class GroupApi extends MpApi {
public int getGroupByOpenId(String openId) throws WeixinException {
String group_getid_uri = getRequestUri("group_getid_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(group_getid_uri, token.getAccessToken()),
String.format("{\"openid\":\"%s\"}", openId));
@@ -112,7 +112,7 @@ public class GroupApi extends MpApi {
Token token = tokenHolder.getToken();
Group group = new Group(groupId, name);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(group_modify_uri, token.getAccessToken()),
group.toModifyJson());
return response.getAsJsonResult();
@@ -134,7 +134,7 @@ public class GroupApi extends MpApi {
throws WeixinException {
String group_move_uri = getRequestUri("group_move_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(String.format(group_move_uri,
WeixinResponse response = weixinExecutor.post(String.format(group_move_uri,
token.getAccessToken()), String.format(
"{\"openid\":\"%s\",\"to_groupid\":%d}", openId, groupId));
@@ -160,7 +160,7 @@ public class GroupApi extends MpApi {
JSONObject obj = new JSONObject();
obj.put("to_groupid", groupId);
obj.put("openid_list", openIds);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(group_batchmove_uri, token.getAccessToken()),
obj.toJSONString());
@@ -180,7 +180,7 @@ public class GroupApi extends MpApi {
public JsonResult deleteGroup(int groupId) throws WeixinException {
String group_delete_uri = getRequestUri("group_delete_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(group_delete_uri, token.getAccessToken()),
String.format("{\"group\":{\"id\":%d}}", groupId));
@@ -53,7 +53,7 @@ public class HelperApi extends MpApi {
JSONObject obj = new JSONObject();
obj.put("action", "long2short");
obj.put("long_url", url);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(shorturl_uri, token.getAccessToken()),
obj.toJSONString());
@@ -75,7 +75,7 @@ public class HelperApi extends MpApi {
public SemResult semantic(SemQuery semQuery) throws WeixinException {
String semantic_uri = getRequestUri("semantic_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(semantic_uri, token.getAccessToken()),
semQuery.toJson());
return response.getAsObject(new TypeReference<SemResult>() {
@@ -93,7 +93,7 @@ public class HelperApi extends MpApi {
public List<String> getCallbackip() throws WeixinException {
String getcallbackip_uri = getRequestUri("getcallbackip_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(String.format(getcallbackip_uri,
WeixinResponse response = weixinExecutor.post(String.format(getcallbackip_uri,
token.getAccessToken()));
return JSON.parseArray(response.getAsJson().getString("ip_list"),
String.class);
@@ -115,7 +115,7 @@ public class HelperApi extends MpApi {
public MenuSetting getMenuSetting() throws WeixinException {
String menu_get_selfmenu_uri = getRequestUri("menu_get_selfmenu_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.get(String.format(menu_get_selfmenu_uri,
WeixinResponse response = weixinExecutor.get(String.format(menu_get_selfmenu_uri,
token.getAccessToken()));
JSONObject result = response.getAsJson();
@@ -188,7 +188,7 @@ public class HelperApi extends MpApi {
public AutoReplySetting getAutoReplySetting() throws WeixinException {
String autoreply_setting_get_uri = getRequestUri("autoreply_setting_get_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.get(String.format(
WeixinResponse response = weixinExecutor.get(String.format(
autoreply_setting_get_uri, token.getAccessToken()));
JSONObject result = response.getAsJson();
@@ -53,7 +53,7 @@ public class MassApi extends MpApi {
Token token = tokenHolder.getToken();
JSONObject obj = new JSONObject();
obj.put("articles", articles);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(article_upload_uri, token.getAccessToken()),
obj.toJSONString());
@@ -113,7 +113,7 @@ public class MassApi extends MpApi {
obj.put("msgtype", msgtype);
String mass_group_uri = getRequestUri("mass_group_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(mass_group_uri, token.getAccessToken()),
obj.toJSONString());
@@ -182,7 +182,7 @@ public class MassApi extends MpApi {
obj.put("msgtype", msgtype);
String mass_openid_uri = getRequestUri("mass_openid_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(mass_openid_uri, token.getAccessToken()),
obj.toJSONString());
@@ -230,7 +230,7 @@ public class MassApi extends MpApi {
JSONObject obj = new JSONObject();
obj.put("msgid", msgid);
String mass_delete_uri = getRequestUri("mass_delete_uri");
Token token = tokenHolder.getToken();
Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor.post(
String.format(mass_delete_uri, token.getAccessToken()),
obj.toJSONString());
@@ -262,7 +262,7 @@ public class MassApi extends MpApi {
obj.put(msgtype, JSON.toJSON(tuple));
obj.put("msgtype", msgtype);
String mass_preview_uri = getRequestUri("mass_preview_uri");
Token token = tokenHolder.getToken();
Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor.post(
String.format(mass_preview_uri, token.getAccessToken()),
obj.toJSONString());
@@ -284,7 +284,7 @@ public class MassApi extends MpApi {
JSONObject obj = new JSONObject();
obj.put("msg_id", msgId);
String mass_get_uri = getRequestUri("mass_get_uri");
Token token = tokenHolder.getToken();
Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor.post(
String.format(mass_get_uri, token.getAccessToken()),
obj.toJSONString());
@@ -18,12 +18,13 @@ import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.parser.deserializer.ExtraProcessor;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.ContentType;
import com.foxinmy.weixin4j.http.Header;
import com.foxinmy.weixin4j.http.HttpGet;
import com.foxinmy.weixin4j.http.HttpPost;
import com.foxinmy.weixin4j.http.HttpClientException;
import com.foxinmy.weixin4j.http.HttpHeaders;
import com.foxinmy.weixin4j.http.HttpMethod;
import com.foxinmy.weixin4j.http.HttpParams;
import com.foxinmy.weixin4j.http.HttpRequest;
import com.foxinmy.weixin4j.http.HttpResponse;
import com.foxinmy.weixin4j.http.apache.FormBodyPart;
import com.foxinmy.weixin4j.http.apache.HttpHeaders;
import com.foxinmy.weixin4j.http.apache.InputStreamBody;
import com.foxinmy.weixin4j.http.apache.StringBody;
import com.foxinmy.weixin4j.http.entity.StringEntity;
@@ -41,13 +42,13 @@ import com.foxinmy.weixin4j.token.TokenHolder;
import com.foxinmy.weixin4j.tuple.MpArticle;
import com.foxinmy.weixin4j.tuple.MpVideo;
import com.foxinmy.weixin4j.type.MediaType;
import com.foxinmy.weixin4j.util.ConfigUtil;
import com.foxinmy.weixin4j.util.ErrorUtil;
import com.foxinmy.weixin4j.util.FileUtil;
import com.foxinmy.weixin4j.util.IOUtil;
import com.foxinmy.weixin4j.util.ObjectId;
import com.foxinmy.weixin4j.util.StringUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
import com.foxinmy.weixin4j.util.Weixin4jConst;
import com.foxinmy.weixin4j.util.WeixinErrorUtil;
/**
* 素材相关API
@@ -87,7 +88,7 @@ public class MediaApi extends MpApi {
}
String image_upload_uri = getRequestUri("image_upload_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(String.format(
WeixinResponse response = weixinExecutor.post(String.format(
image_upload_uri, token.getAccessToken()),
new FormBodyPart("media", new InputStreamBody(is,
ContentType.IMAGE_JPG.getMimeType(), fileName)));
@@ -120,7 +121,7 @@ public class MediaApi extends MpApi {
obj.put("description", description);
String video_upload_uri = getRequestUri("video_upload_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(video_upload_uri, token.getAccessToken()),
obj.toJSONString());
@@ -190,29 +191,32 @@ public class MediaApi extends MpApi {
try {
if (isMaterial) {
String material_media_upload_uri = getRequestUri("material_media_upload_uri");
response = weixinClient
response = weixinExecutor
.post(String.format(material_media_upload_uri,
token.getAccessToken()), new FormBodyPart(
"media", new InputStreamBody(is, mediaType
.getContentType().getMimeType(),
fileName)), new FormBodyPart("type",
new StringBody(mediaType.name(), Consts.UTF_8)));
"media", new InputStreamBody(
new ByteArrayInputStream(content),
mediaType.getContentType()
.getMimeType(), fileName)),
new FormBodyPart("type", new StringBody(
mediaType.name(), Consts.UTF_8)));
return new MediaUploadResult(response.getAsJson().getString(
"media_id"), mediaType, new Date());
} else {
String media_upload_uri = getRequestUri("media_upload_uri");
response = weixinClient.post(String.format(media_upload_uri,
response = weixinExecutor.post(String.format(media_upload_uri,
token.getAccessToken(), mediaType.name()),
new FormBodyPart("media", new InputStreamBody(is,
mediaType.getContentType().getMimeType(),
new FormBodyPart("media", new InputStreamBody(
new ByteArrayInputStream(content), mediaType
.getContentType().getMimeType(),
fileName)));
JSONObject obj = response.getAsJson();
return new MediaUploadResult(obj.getString("media_id"),
obj.getObject("type", MediaType.class), new Date(
obj.getLong("created_at") * 1000l));
/*
* return response.getAsObject(new TypeReference<MediaResult>()
* { });
* return response.getAsObject(new
* TypeReference<MediaUploadResult>() { });
*/
}
} catch (UnsupportedEncodingException e) {
@@ -244,7 +248,7 @@ public class MediaApi extends MpApi {
*/
public File downloadMediaFile(String mediaId, boolean isMaterial)
throws WeixinException {
String media_path = ConfigUtil.getValue("media_path",
String media_path = Weixin4jConfigUtil.getValue("media_path",
Weixin4jConst.DEFAULT_MEDIA_PATH);
final String prefixName = String.format("%s.", mediaId);
File[] files = new File(media_path).listFiles(new FilenameFilter() {
@@ -301,45 +305,49 @@ public class MediaApi extends MpApi {
throws WeixinException {
Token token = tokenHolder.getToken();
try {
HttpResponse response = null;
HttpRequest request = null;
if (isMaterial) {
String material_media_download_uri = getRequestUri("material_media_download_uri");
HttpPost method = new HttpPost(String.format(
request = new HttpRequest(HttpMethod.POST, String.format(
material_media_download_uri, token.getAccessToken()));
method.setEntity(new StringEntity(String.format(
request.setEntity(new StringEntity(String.format(
"{\"media_id\":\"%s\"}", mediaId)));
response = weixinClient.execute(method);
} else {
String meida_download_uri = getRequestUri("meida_download_uri");
HttpGet method = new HttpGet(String.format(meida_download_uri,
token.getAccessToken(), mediaId));
response = weixinClient.execute(method);
request = new HttpRequest(HttpMethod.GET, String.format(
meida_download_uri, token.getAccessToken(), mediaId));
}
byte[] content = response.getContent();
Header contentType = response
.getFirstHeader(HttpHeaders.CONTENT_TYPE);
Header disposition = response.getFirstHeader("Content-disposition");
if (contentType.getValue().contains(
ContentType.APPLICATION_JSON.getMimeType())
|| (disposition != null && disposition.getValue().indexOf(
".json") > 0)) {
HttpParams params = weixinExecutor.getExecuteParams();
request.setParams(params);
HttpResponse response = weixinExecutor.getExecuteClient().execute(
request);
byte[] content = IOUtil.toByteArray(response.getBody());
HttpHeaders headers = response.getHeaders();
String contentType = headers.getFirst(HttpHeaders.CONTENT_TYPE);
String disposition = headers
.getFirst(HttpHeaders.CONTENT_DISPOSITION);
if (contentType
.contains(ContentType.APPLICATION_JSON.getMimeType())
|| (disposition != null && disposition.indexOf(".json") > 0)) {
JsonResult jsonResult = JSON.parseObject(content, 0,
content.length, Consts.UTF_8.newDecoder(),
JsonResult.class);
if (jsonResult.getCode() != 0) {
if (StringUtil.isBlank(jsonResult.getDesc())) {
jsonResult.setDesc(ErrorUtil.getText(Integer
jsonResult.setDesc(WeixinErrorUtil.getText(Integer
.toString(jsonResult.getCode())));
}
throw new WeixinException(Integer.toString(jsonResult
.getCode()), jsonResult.getDesc());
}
}
String fileName = String.format("%s.%s", mediaId, contentType
.getValue().split("/")[1]);
String fileName = String.format("%s.%s", mediaId,
contentType.split("/")[1]);
return new MediaDownloadResult(content,
ContentType.create(contentType.getValue()), fileName);
ContentType.create(contentType), fileName);
} catch (IOException e) {
throw new WeixinException("I/O Error on getBody");
} catch (HttpClientException e) {
throw new WeixinException(e);
}
}
@@ -365,7 +373,7 @@ public class MediaApi extends MpApi {
String material_article_upload_uri = getRequestUri("material_article_upload_uri");
JSONObject obj = new JSONObject();
obj.put("articles", articles);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(material_article_upload_uri,
token.getAccessToken()), obj.toJSONString());
@@ -414,7 +422,7 @@ public class MediaApi extends MpApi {
obj.put("articles", articles);
obj.put("media_id", mediaId);
obj.put("index", index);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(material_article_update_uri,
token.getAccessToken()), obj.toJSONString());
@@ -437,7 +445,7 @@ public class MediaApi extends MpApi {
String material_media_del_uri = getRequestUri("material_media_del_uri");
JSONObject obj = new JSONObject();
obj.put("media_id", mediaId);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(material_media_del_uri, token.getAccessToken()),
obj.toJSONString());
@@ -466,7 +474,7 @@ public class MediaApi extends MpApi {
JSONObject description = new JSONObject();
description.put("title", title);
description.put("introduction", introduction);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(material_media_upload_uri,
token.getAccessToken()),
new FormBodyPart("media", new InputStreamBody(is,
@@ -502,7 +510,7 @@ public class MediaApi extends MpApi {
public MediaCounter countMaterialMedia() throws WeixinException {
Token token = tokenHolder.getToken();
String material_media_count_uri = getRequestUri("material_media_count_uri");
WeixinResponse response = weixinClient.get(String.format(
WeixinResponse response = weixinExecutor.get(String.format(
material_media_count_uri, token.getAccessToken()));
return response.getAsObject(new TypeReference<MediaCounter>() {
@@ -534,7 +542,7 @@ public class MediaApi extends MpApi {
obj.put("type", mediaType.name());
obj.put("offset", pageable.getOffset());
obj.put("count", pageable.getPageSize());
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(material_media_list_uri, token.getAccessToken()),
obj.toJSONString());
MediaRecord mediaRecord = null;
@@ -50,7 +50,7 @@ public class MenuApi extends MpApi {
Token token = tokenHolder.getToken();
JSONObject obj = new JSONObject();
obj.put("button", btnList);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(menu_create_uri, token.getAccessToken()),
JSON.toJSONString(obj, new NameFilter() {
@Override
@@ -88,7 +88,7 @@ public class MenuApi extends MpApi {
public List<Button> getMenu() throws WeixinException {
String menu_get_uri = getRequestUri("menu_get_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.get(String.format(menu_get_uri,
WeixinResponse response = weixinExecutor.get(String.format(menu_get_uri,
token.getAccessToken()));
JSONArray buttons = response.getAsJson().getJSONObject("menu")
@@ -118,7 +118,7 @@ public class MenuApi extends MpApi {
public JsonResult deleteMenu() throws WeixinException {
String menu_delete_uri = getRequestUri("menu_delete_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.get(String.format(
WeixinResponse response = weixinExecutor.get(String.format(
menu_delete_uri, token.getAccessToken()));
return response.getAsJsonResult();
@@ -79,7 +79,7 @@ public class NotifyApi extends MpApi {
}
String custom_notify_uri = getRequestUri("custom_notify_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(custom_notify_uri, token.getAccessToken()),
obj.toJSONString());
@@ -10,7 +10,7 @@ import com.foxinmy.weixin4j.model.Consts;
import com.foxinmy.weixin4j.mp.model.OauthToken;
import com.foxinmy.weixin4j.mp.model.User;
import com.foxinmy.weixin4j.mp.type.Lang;
import com.foxinmy.weixin4j.util.ConfigUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
import com.foxinmy.weixin4j.util.StringUtil;
/**
@@ -32,7 +32,7 @@ public class OauthApi extends MpApi {
*/
public String getAuthorizeURL() {
String appId = DEFAULT_WEIXIN_ACCOUNT.getId();
String redirectUri = ConfigUtil.getValue("user_oauth_redirect_uri");
String redirectUri = Weixin4jConfigUtil.getValue("user_oauth_redirect_uri");
return getAuthorizeURL(appId, redirectUri, "state", "snsapi_login");
}
@@ -86,7 +86,7 @@ public class OauthApi extends MpApi {
public OauthToken getOauthToken(String code, String appid, String appsecret)
throws WeixinException {
String user_token_uri = getRequestUri("sns_user_token_uri");
WeixinResponse response = weixinClient.get(String.format(
WeixinResponse response = weixinExecutor.get(String.format(
user_token_uri, appid, appsecret, code));
return response.getAsObject(new TypeReference<OauthToken>() {
@@ -115,7 +115,7 @@ public class OauthApi extends MpApi {
public OauthToken refreshToken(String appId, String refreshToken)
throws WeixinException {
String sns_token_refresh_uri = getRequestUri("sns_token_refresh_uri");
WeixinResponse response = weixinClient.get(String.format(
WeixinResponse response = weixinExecutor.get(String.format(
sns_token_refresh_uri, appId, refreshToken));
return response.getAsObject(new TypeReference<OauthToken>() {
@@ -134,7 +134,7 @@ public class OauthApi extends MpApi {
public boolean authAccessToken(String accessToken, String openId) {
String sns_auth_token_uri = getRequestUri("sns_auth_token_uri");
try {
weixinClient.get(String.format(sns_auth_token_uri, accessToken,
weixinExecutor.get(String.format(sns_auth_token_uri, accessToken,
openId));
return true;
} catch (WeixinException e) {
@@ -179,7 +179,7 @@ public class OauthApi extends MpApi {
public User getUser(String oauthToken, String openid, Lang lang)
throws WeixinException {
String user_info_uri = getRequestUri("sns_user_info_uri");
WeixinResponse response = weixinClient.get(String.format(user_info_uri,
WeixinResponse response = weixinExecutor.get(String.format(user_info_uri,
oauthToken, openid, lang.name()));
return response.getAsObject(new TypeReference<User>() {
@@ -2,7 +2,6 @@ package com.foxinmy.weixin4j.mp.api;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -29,8 +28,9 @@ import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.parser.Feature;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.JsonResult;
import com.foxinmy.weixin4j.http.weixin.SSLHttpClinet;
import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor;
import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.http.weixin.WeixinSSLRequestExecutor;
import com.foxinmy.weixin4j.model.Consts;
import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.model.WeixinPayAccount;
@@ -46,11 +46,11 @@ import com.foxinmy.weixin4j.type.BillType;
import com.foxinmy.weixin4j.type.IdQuery;
import com.foxinmy.weixin4j.type.RefundType;
import com.foxinmy.weixin4j.type.SignType;
import com.foxinmy.weixin4j.util.ConfigUtil;
import com.foxinmy.weixin4j.util.DateUtil;
import com.foxinmy.weixin4j.util.DigestUtil;
import com.foxinmy.weixin4j.util.MapUtil;
import com.foxinmy.weixin4j.util.StringUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
import com.foxinmy.weixin4j.xml.ListsuffixResultDeserializer;
/**
@@ -68,7 +68,7 @@ public class Pay2Api extends MpApi {
private final TokenHolder tokenHolder;
public Pay2Api() {
this(JSON.parseObject(ConfigUtil.getValue("account"),
this(JSON.parseObject(Weixin4jConfigUtil.getValue("account"),
WeixinPayAccount.class));
}
@@ -121,7 +121,7 @@ public class Pay2Api extends MpApi {
obj.put("app_signature", signature);
obj.put("sign_method", SignType.SHA1.name().toLowerCase());
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(orderquery_uri, token.getAccessToken()),
obj.toJSONString());
@@ -232,8 +232,9 @@ public class Pay2Api extends MpApi {
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(),
new SecureRandom());
SSLHttpClinet request = new SSLHttpClinet(ctx);
response = request.get(refund_uri, map);
WeixinRequestExecutor weixinExecutor = new WeixinSSLRequestExecutor(
ctx);
response = weixinExecutor.get(refund_uri, map);
} catch (WeixinException e) {
throw e;
} catch (Exception e) {
@@ -356,7 +357,7 @@ public class Pay2Api extends MpApi {
billType = BillType.ALL;
}
String formatBillDate = DateUtil.fortmat2yyyyMMdd(billDate);
String bill_path = ConfigUtil.getValue("bill_path");
String bill_path = Weixin4jConfigUtil.getValue("bill_path");
String fileName = String.format("%s_%s_%s.txt", formatBillDate,
billType.name().toLowerCase(), weixinAccount.getId());
File file = new File(String.format("%s/%s", bill_path, fileName));
@@ -374,15 +375,14 @@ public class Pay2Api extends MpApi {
map.put("key", weixinAccount.getPartnerKey());
String sign = DigestUtil.MD5(MapUtil.toJoinString(map, false, false));
map.put("sign", sign.toLowerCase());
WeixinResponse response = weixinClient.get(downloadbill_uri, map);
WeixinResponse response = weixinExecutor.get(downloadbill_uri, map);
BufferedReader reader = null;
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file), Consts.GBK));
reader = new BufferedReader(new InputStreamReader(
new ByteArrayInputStream(response.getContent()),
com.foxinmy.weixin4j.model.Consts.GBK));
response.getBody(), com.foxinmy.weixin4j.model.Consts.GBK));
String line = null;
while ((line = reader.readLine()) != null) {
writer.write(line);
@@ -426,7 +426,7 @@ public class Pay2Api extends MpApi {
map.put(idQuery.getType().getName(), idQuery.getId());
String sign = PayUtil.paysignMd5(map, weixinAccount.getPartnerKey());
map.put("sign", sign.toLowerCase());
WeixinResponse response = weixinClient.get(refundquery_uri, map);
WeixinResponse response = weixinExecutor.get(refundquery_uri, map);
return ListsuffixResultDeserializer.deserialize(response.getAsString(),
RefundRecordV2.class);
}
@@ -465,7 +465,7 @@ public class Pay2Api extends MpApi {
map.put("app_signature", PayUtil2.paysignSha(map));
map.put("sign_method", SignType.SHA1.name().toLowerCase());
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(delivernotify_uri, token.getAccessToken()),
JSON.toJSONString(map));
return response.getAsJsonResult();
@@ -485,7 +485,7 @@ public class Pay2Api extends MpApi {
throws WeixinException {
String payfeedback_update_uri = getRequestUri("payfeedback_update_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.get(String.format(
WeixinResponse response = weixinExecutor.get(String.format(
payfeedback_update_uri, token.getAccessToken(), openId,
feedbackId));
return response.getAsJsonResult();
@@ -12,7 +12,8 @@ import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.mp.model.QRParameter;
import com.foxinmy.weixin4j.mp.model.QRResult;
import com.foxinmy.weixin4j.token.TokenHolder;
import com.foxinmy.weixin4j.util.ConfigUtil;
import com.foxinmy.weixin4j.util.IOUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
import com.foxinmy.weixin4j.util.Weixin4jConst;
/**
@@ -48,14 +49,18 @@ public class QrApi extends MpApi {
public QRResult createQR(QRParameter parameter) throws WeixinException {
Token token = tokenHolder.getToken();
String qr_uri = getRequestUri("qr_ticket_uri");
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(qr_uri, token.getAccessToken()),
parameter.getContent());
QRResult result = response.getAsObject(new TypeReference<QRResult>() {
});
qr_uri = getRequestUri("qr_image_uri");
response = weixinClient.get(String.format(qr_uri, result.getTicket()));
result.setContent(response.getContent());
response = weixinExecutor.get(String.format(qr_uri, result.getTicket()));
try {
result.setContent(IOUtil.toByteArray(response.getBody()));
} catch (IOException e) {
throw new WeixinException(e);
}
return result;
}
@@ -75,7 +80,7 @@ public class QrApi extends MpApi {
* @see com.foxinmy.weixin4j.mp.model.QRParameter
*/
public File createQRFile(QRParameter parameter) throws WeixinException {
String qr_path = ConfigUtil.getValue("qr_path",
String qr_path = Weixin4jConfigUtil.getValue("qr_path",
Weixin4jConst.DEFAULT_QRCODE_PATH);
String filename = String.format("%s_%s_%d.jpg", parameter.getQrType()
.name(), parameter.getSceneValue(), parameter
@@ -47,7 +47,7 @@ public class TmplApi extends MpApi {
}
Token token = tokenHolder.getToken();
String template_set_industry_uri = getRequestUri("template_set_industry_uri");
WeixinResponse response = weixinClient.post(String.format(
WeixinResponse response = weixinExecutor.post(String.format(
template_set_industry_uri, token.getAccessToken()), obj
.toJSONString());
@@ -67,7 +67,7 @@ public class TmplApi extends MpApi {
public String getTemplateId(String shortId) throws WeixinException {
Token token = tokenHolder.getToken();
String template_getid_uri = getRequestUri("template_getid_uri");
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(template_getid_uri, token.getAccessToken()),
String.format("{\"template_id_short\":\"%s\"}", shortId));
@@ -93,7 +93,7 @@ public class TmplApi extends MpApi {
throws WeixinException {
Token token = tokenHolder.getToken();
String template_send_uri = getRequestUri("template_send_uri");
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(template_send_uri, token.getAccessToken()),
JSON.toJSONString(tplMessage));
@@ -69,7 +69,7 @@ public class UserApi extends MpApi {
public User getUser(String openId, Lang lang) throws WeixinException {
String user_info_uri = getRequestUri("api_user_info_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.get(String.format(user_info_uri,
WeixinResponse response = weixinExecutor.get(String.format(user_info_uri,
token.getAccessToken(), openId, lang.name()));
return response.getAsObject(new TypeReference<User>() {
@@ -90,7 +90,7 @@ public class UserApi extends MpApi {
public Following getFollowing(String nextOpenId) throws WeixinException {
String following_uri = getRequestUri("following_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.get(String.format(following_uri,
WeixinResponse response = weixinExecutor.get(String.format(following_uri,
token.getAccessToken(), nextOpenId == null ? "" : nextOpenId));
Following following = response
@@ -156,7 +156,7 @@ public class UserApi extends MpApi {
JSONObject obj = new JSONObject();
obj.put("openid", openId);
obj.put("remark", remark);
WeixinResponse response = weixinClient.post(
WeixinResponse response = weixinExecutor.post(
String.format(updateremark_uri, token.getAccessToken()),
obj.toJSONString());
@@ -7,7 +7,6 @@
api_base_url=https://api.weixin.qq.com
api_cgi_url={api_base_url}/cgi-bin
mp_base_url=https://mp.weixin.qq.com/cgi-bin
file_base_url=http://file.api.weixin.qq.com/cgi-bin
mch_base_url=https://api.mch.weixin.qq.com
tenpay_base_url=http://mch.tenpay.com
tenpay_ssl_base_url=https://mch.tenpay.com
@@ -30,11 +29,11 @@ api_token_uri={api_cgi_url}/token?grant_type=client_credential&appid=%s&secret=%
qr_ticket_uri={api_cgi_url}/qrcode/create?access_token=%s
qr_image_uri={mp_base_url}/showqrcode?ticket=%s
# \u4e0a\u4f20\u5a92\u4f53\u6587\u4ef6
media_upload_uri={file_base_url}/media/upload?access_token=%s&type=%s
media_upload_uri={api_cgi_url}/media/upload?access_token=%s&type=%s
# \u4e0a\u4f20\u56fe\u7247
image_upload_uri={api_cgi_url}/media/uploadimg?access_token=%s
# \u4e0b\u8f7d\u5a92\u4f53\u6587\u4ef6
meida_download_uri={file_base_url}/media/get?access_token=%s&media_id=%s
meida_download_uri={api_cgi_url}/media/get?access_token=%s&media_id=%s
# \u53d1\u9001\u5ba2\u670d\u6d88\u606f
custom_notify_uri={api_cgi_url}/message/custom/send?access_token=%s
# \u521b\u5efa\u5206\u7ec4
@@ -64,7 +63,7 @@ menu_delete_uri={api_cgi_url}/menu/delete?access_token=%s
# \u4e0a\u4f20\u56fe\u6587
article_upload_uri={api_cgi_url}/media/uploadnews?access_token=%s
# \u4e0a\u4f20\u89c6\u9891
video_upload_uri={file_base_url}/media/uploadvideo?access_token=%s
video_upload_uri={api_cgi_url}/media/uploadvideo?access_token=%s
# \u5206\u7ec4\u7fa4\u53d1
mass_group_uri={api_cgi_url}/message/mass/sendall?access_token=%s
# openId\u7fa4\u53d1
@@ -7,7 +7,7 @@ import com.alibaba.fastjson.JSON;
import com.foxinmy.weixin4j.exception.PayException;
import com.foxinmy.weixin4j.model.WeixinPayAccount;
import com.foxinmy.weixin4j.type.SignType;
import com.foxinmy.weixin4j.util.ConfigUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
import com.foxinmy.weixin4j.util.DateUtil;
import com.foxinmy.weixin4j.util.DigestUtil;
import com.foxinmy.weixin4j.util.MapUtil;
@@ -152,14 +152,14 @@ public class PayUtil2 {
private static String JSAPIV2() {
WeixinPayAccount weixinAccount = JSON.parseObject(
ConfigUtil.getValue("account"), WeixinPayAccount.class);
Weixin4jConfigUtil.getValue("account"), WeixinPayAccount.class);
return createPayJsRequestJsonV2("支付测试", "JSAPI01", 0.01d, "127.0.0.0",
"http://127.0.0.1/jsapi/notify", weixinAccount);
}
private static String NATIVEV2() {
WeixinPayAccount weixinAccount = JSON.parseObject(
ConfigUtil.getValue("account"), WeixinPayAccount.class);
Weixin4jConfigUtil.getValue("account"), WeixinPayAccount.class);
return createNativePayRequestURLV2(weixinAccount, "P1");
}
@@ -2,7 +2,7 @@ package com.foxinmy.weixin4j.mp.token;
import com.alibaba.fastjson.JSONObject;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.WeixinHttpClient;
import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor;
import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.mp.type.URLConsts;
@@ -24,7 +24,7 @@ public class WeixinJSTicketCreator implements TokenCreator {
private final String appid;
private final TokenHolder weixinTokenHolder;
private final WeixinHttpClient httpClient;
private final WeixinRequestExecutor httpClient;
/**
* jssdk
@@ -37,7 +37,7 @@ public class WeixinJSTicketCreator implements TokenCreator {
public WeixinJSTicketCreator(String appid, TokenHolder weixinTokenHolder) {
this.appid = appid;
this.weixinTokenHolder = weixinTokenHolder;
this.httpClient = new WeixinHttpClient();
this.httpClient = new WeixinRequestExecutor();
}
@Override
@@ -2,7 +2,7 @@ package com.foxinmy.weixin4j.mp.token;
import com.alibaba.fastjson.TypeReference;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.WeixinHttpClient;
import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor;
import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.mp.type.URLConsts;
@@ -21,7 +21,7 @@ import com.foxinmy.weixin4j.token.TokenCreator;
*/
public class WeixinTokenCreator implements TokenCreator {
private final WeixinHttpClient httpClient;
private final WeixinRequestExecutor httpClient;
private final String appid;
private final String secret;
@@ -35,7 +35,7 @@ public class WeixinTokenCreator implements TokenCreator {
public WeixinTokenCreator(String appid, String secret) {
this.appid = appid;
this.secret = secret;
this.httpClient = new WeixinHttpClient();
this.httpClient = new WeixinRequestExecutor();
}
@Override
@@ -47,7 +47,7 @@ public class MediaTest extends TokenTest {
File file = new File("/Users/jy/Downloads/weixin4j.png");
MediaUploadResult mediaId = mediaApi.uploadMedia(false,
new FileInputStream(file), file.getName());
// 1Vgd1R5DdznSc3rPxd-sNZ3pLt54cejhJ5ItuNcCgrqoQArNANWy5oxso_r9KNlE
// zloeIROuS3YJFZwugGNM5oGBolqJmU_8FKTUmJwTFbSjfky904S9OPly5Wq0BRn2
Assert.assertNotNull(mediaId);
System.err.println(mediaId);
}
@@ -55,13 +55,14 @@ public class MediaTest extends TokenTest {
@Test
public void download1() throws WeixinException, IOException {
MediaDownloadResult content = mediaApi.downloadMedia(
"jM5OWhnYb2DgrNm97HGj8aUdsZcweQc93tnwbH1mERo", true);
"zloeIROuS3YJFZwugGNM5oGBolqJmU_8FKTUmJwTFbSjfky904S9OPly5Wq0BRn2", true);
Assert.assertTrue(content != null);
System.err.println(content);
}
@Test
public void upload2() throws IOException, WeixinException {
File file = new File("/Users/jy/Downloads/test.jpg");
File file = new File("/Users/jy/Downloads/weixin4j.png");
MediaUploadResult mediaId = mediaApi.uploadMedia(true,
new FileInputStream(file), file.getName());
// 8790403529
@@ -59,20 +59,22 @@ public class MenuTest extends TokenTest {
Button b1 = new Button("我要订餐", "ORDERING", ButtonType.click);
btnList.add(b1);
Button b2 = new Button("查询订单", "http://www.lendocean.com/order/list", ButtonType.view);
Button b2 = new Button("查询订单", "http://www.lendocean.com/order/list",
ButtonType.view);
btnList.add(b2);
Button b3 = new Button("最新资讯", "NEWS", ButtonType.click);
btnList.add(b3);
JsonResult result = menuApi.createMenu(btnList);
Assert.assertEquals(0, result.getCode());
}
@Test
public void get() throws WeixinException {
btnList = menuApi.getMenu();
for (Button btn : btnList) {
System.out.println(btn);
}
System.err.println(menuApi.getMenu());
Assert.assertEquals(1, btnList.size());
}
@@ -24,7 +24,7 @@ import com.foxinmy.weixin4j.token.FileTokenStorager;
import com.foxinmy.weixin4j.type.IdQuery;
import com.foxinmy.weixin4j.type.IdType;
import com.foxinmy.weixin4j.type.TradeType;
import com.foxinmy.weixin4j.util.ConfigUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
public class PayTest {
private final static Pay2Api PAY2;
@@ -35,7 +35,7 @@ public class PayTest {
ACCOUNT2 = new WeixinPayAccount("请填入v2版本的appid", "请填入v2版本的appSecret",
"请填入v2版本的paysignkey", null, null, null, "请填入v2版本的partnerId",
"请填入v2版本的partnerKey");
PAY2 = new Pay2Api(ACCOUNT2, new FileTokenStorager(ConfigUtil.getValue(
PAY2 = new Pay2Api(ACCOUNT2, new FileTokenStorager(Weixin4jConfigUtil.getValue(
"token_path", "/tmp/weixin4j/token")));
ACCOUNT3 = new WeixinPayAccount("请填入v3版本的appid", "请填入v3版本的appSecret",
"请填入v3版本的paysignkey", "请填入v3版本的mchid", null, null, null, null);
@@ -6,10 +6,11 @@ import org.junit.Test;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.model.WeixinAccount;
import com.foxinmy.weixin4j.mp.api.MenuApi;
import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator;
import com.foxinmy.weixin4j.token.FileTokenStorager;
import com.foxinmy.weixin4j.token.TokenHolder;
import com.foxinmy.weixin4j.util.ConfigUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
/**
* token测试
@@ -25,11 +26,11 @@ public class TokenTest {
@Before
public void setUp() {
WeixinAccount weixinAccount = ConfigUtil.getWeixinAccount();
WeixinAccount weixinAccount = Weixin4jConfigUtil.getWeixinAccount();
tokenHolder = new TokenHolder(new WeixinTokenCreator(
weixinAccount.getId(), weixinAccount.getSecret()),
new FileTokenStorager(ConfigUtil.getValue(
"token_path", "/tmp/weixin4j/token")));
new FileTokenStorager(Weixin4jConfigUtil.getValue("token_path",
"/tmp/weixin4j/token")));
}
@Test