From d659e5b62104b616e9ab5f7868a32220bc51068e Mon Sep 17 00:00:00 2001 From: Daniel Qian Date: Sat, 1 Nov 2014 13:57:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E6=94=BElow-level=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E5=BD=93=E6=9C=AC=E9=A1=B9=E7=9B=AE=E8=B7=9F=E4=B8=8D?= =?UTF-8?q?=E4=B8=8A=E5=BE=AE=E4=BF=A1api=E7=9A=84=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=80=9F=E5=BA=A6=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E4=BA=BA=E5=91=98=E8=BF=98=E5=8F=AF=E4=BB=A5=E4=BD=BF?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/chanjar/weixin/cp/api/WxCpService.java | 39 ++++++++++++++++++- .../weixin/cp/api/WxCpServiceImpl.java | 8 ++++ .../me/chanjar/weixin/mp/api/WxMpService.java | 39 ++++++++++++++++++- .../weixin/mp/api/WxMpServiceImpl.java | 10 ++++- 4 files changed, 91 insertions(+), 5 deletions(-) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java index 26646167..1355f17a 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java @@ -7,6 +7,7 @@ import java.util.List; import me.chanjar.weixin.common.bean.WxMenu; import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; +import me.chanjar.weixin.common.util.http.RequestExecutor; import me.chanjar.weixin.cp.bean.*; import me.chanjar.weixin.cp.bean.WxCpDepart; import me.chanjar.weixin.cp.bean.WxCpUser; @@ -65,8 +66,8 @@ public interface WxCpService { * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=上传下载多媒体文件 * * - * @param mediaType 媒体类型, 请看{@link WxConsts} - * @param fileType 文件类型,请看{@link WxConsts} + * @param mediaType 媒体类型, 请看{@link me.chanjar.weixin.common.api.WxConsts} + * @param fileType 文件类型,请看{@link me.chanjar.weixin.common.api.WxConsts} * @param inputStream 输入流 * @throws WxErrorException */ @@ -281,6 +282,40 @@ public interface WxCpService { */ public void tagRemoveUsers(String tagId, List userIds) throws WxErrorException; + /** + * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求 + * @param url + * @param queryParam + * @return + * @throws WxErrorException + */ + String get(String url, String queryParam) throws WxErrorException; + + /** + * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的POST请求 + * @param url + * @param postData + * @return + * @throws WxErrorException + */ + String post(String url, String postData) throws WxErrorException; + + /** + *
+   * Service没有实现某个API的时候,可以用这个,
+   * 比{@link #get}和{@link #post}方法更灵活,可以自己构造RequestExecutor用来处理不同的参数和不同的返回类型。
+   * 可以参考,{@link me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor}的实现方法
+   * 
+ * @param executor + * @param uri + * @param data + * @param + * @param + * @return + * @throws WxErrorException + */ + public T execute(RequestExecutor executor, String uri, E data) throws WxErrorException; + /** * 注入 {@link WxCpConfigStorage} 的实现 * diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java index 4d9b2af3..279ac6b2 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java @@ -308,6 +308,14 @@ public class WxCpServiceImpl implements WxCpService { execute(new SimplePostRequestExecutor(), url, jsonObject.toString()); } + public String get(String url, String queryParam) throws WxErrorException { + return execute(new SimpleGetRequestExecutor(), url, queryParam); + } + + public String post(String url, String postData) throws WxErrorException { + return execute(new SimplePostRequestExecutor(), url, postData); + } + /** * 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求 * diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java index 3beb5406..1323e615 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java @@ -2,6 +2,7 @@ package me.chanjar.weixin.mp.api; import me.chanjar.weixin.common.bean.WxMenu; import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; +import me.chanjar.weixin.common.util.http.RequestExecutor; import me.chanjar.weixin.mp.bean.*; import me.chanjar.weixin.mp.bean.result.*; import me.chanjar.weixin.common.exception.WxErrorException; @@ -318,8 +319,42 @@ public interface WxMpService { public void templateSend(WxMpTemplateMessage templateMessage) throws WxErrorException; /** - * 注入 {@link WxMpConfigStorage} 的实现 - * @param wxConfigProvider + * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求 + * @param url + * @param queryParam + * @return + * @throws WxErrorException + */ + String get(String url, String queryParam) throws WxErrorException; + + /** + * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的POST请求 + * @param url + * @param postData + * @return + * @throws WxErrorException */ + String post(String url, String postData) throws WxErrorException; + + /** + *
+   * Service没有实现某个API的时候,可以用这个,
+   * 比{@link #get}和{@link #post}方法更灵活,可以自己构造RequestExecutor用来处理不同的参数和不同的返回类型。
+   * 可以参考,{@link me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor}的实现方法
+   * 
+ * @param executor + * @param uri + * @param data + * @param + * @param + * @return + * @throws WxErrorException + */ + public T execute(RequestExecutor executor, String uri, E data) throws WxErrorException; + + /** + * 注入 {@link WxMpConfigStorage} 的实现 + * @param wxConfigProvider + */ public void setWxMpConfigStorage(WxMpConfigStorage wxConfigProvider); } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java index a2834a9a..95a49889 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java @@ -279,7 +279,15 @@ public class WxMpServiceImpl implements WxMpService { execute(new SimplePostRequestExecutor(), url, templateMessage.toJson()); } - /** + public String get(String url, String queryParam) throws WxErrorException { + return execute(new SimpleGetRequestExecutor(), url, queryParam); + } + + public String post(String url, String postData) throws WxErrorException { + return execute(new SimplePostRequestExecutor(), url, postData); + } + + /** * 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求 * @param executor * @param uri