Skip to content

Commit 29c6a00

Browse files
committed
#855 http请求执行器类RequestExecutor接口增加异步执行方法
1 parent 3c391c5 commit 29c6a00

24 files changed

+237
-64
lines changed

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/BaseMediaDownloadRequestExecutor.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package me.chanjar.weixin.common.util.http;
22

3+
import java.io.File;
4+
import java.io.IOException;
5+
6+
import me.chanjar.weixin.common.error.WxErrorException;
37
import me.chanjar.weixin.common.util.http.apache.ApacheMediaDownloadRequestExecutor;
48
import me.chanjar.weixin.common.util.http.jodd.JoddHttpMediaDownloadRequestExecutor;
59
import me.chanjar.weixin.common.util.http.okhttp.OkHttpMediaDownloadRequestExecutor;
610

7-
import java.io.File;
8-
911
/**
10-
* 下载媒体文件请求执行器,请求的参数是String, 返回的结果是File
12+
* 下载媒体文件请求执行器.
13+
* 请求的参数是String, 返回的结果是File
1114
* 视频文件不支持下载
1215
*
1316
* @author Daniel Qian
@@ -21,6 +24,11 @@ public BaseMediaDownloadRequestExecutor(RequestHttp<H, P> requestHttp, File tmpD
2124
this.tmpDirFile = tmpDirFile;
2225
}
2326

27+
@Override
28+
public void execute(String uri, String data, ResponseHandler<File> handler) throws WxErrorException, IOException {
29+
handler.handle(this.execute(uri, data));
30+
}
31+
2432
public static RequestExecutor<File, String> create(RequestHttp requestHttp, File tmpDirFile) {
2533
switch (requestHttp.getRequestType()) {
2634
case APACHE_HTTP:

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MediaUploadRequestExecutor.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package me.chanjar.weixin.common.util.http;
22

3+
import java.io.File;
4+
import java.io.IOException;
5+
36
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
7+
import me.chanjar.weixin.common.error.WxErrorException;
48
import me.chanjar.weixin.common.util.http.apache.ApacheMediaUploadRequestExecutor;
59
import me.chanjar.weixin.common.util.http.jodd.JoddHttpMediaUploadRequestExecutor;
610
import me.chanjar.weixin.common.util.http.okhttp.OkHttpMediaUploadRequestExecutor;
711

8-
import java.io.File;
9-
1012
/**
11-
* 上传媒体文件请求执行器,请求的参数是File, 返回的结果是String
13+
* 上传媒体文件请求执行器.
14+
* 请求的参数是File, 返回的结果是String
1215
*
1316
* @author Daniel Qian
1417
*/
@@ -19,6 +22,11 @@ public MediaUploadRequestExecutor(RequestHttp requestHttp) {
1922
this.requestHttp = requestHttp;
2023
}
2124

25+
@Override
26+
public void execute(String uri, File data, ResponseHandler<WxMediaUploadResult> handler) throws WxErrorException, IOException {
27+
handler.handle(this.execute(uri, data));
28+
}
29+
2230
public static RequestExecutor<WxMediaUploadResult, File> create(RequestHttp requestHttp) {
2331
switch (requestHttp.getRequestType()) {
2432
case APACHE_HTTP:

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/RequestExecutor.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,21 @@ public interface RequestExecutor<T, E> {
1818
*
1919
* @param uri uri
2020
* @param data 数据
21+
* @return 响应结果
22+
* @throws WxErrorException 自定义异常
23+
* @throws IOException io异常
2124
*/
2225
T execute(String uri, E data) throws WxErrorException, IOException;
26+
27+
28+
/**
29+
* 执行http请求.
30+
*
31+
* @param uri uri
32+
* @param data 数据
33+
* @param handler http响应处理器
34+
* @throws WxErrorException 自定义异常
35+
* @throws IOException io异常
36+
*/
37+
void execute(String uri, E data, ResponseHandler<T> handler) throws WxErrorException, IOException;
2338
}

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/RequestHttp.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,30 @@
22

33
/**
44
* Created by ecoolper on 2017/4/22.
5+
*
6+
* @author ecoolper
57
*/
68
public interface RequestHttp<H, P> {
79

810
/**
9-
* 返回httpClient
11+
* 返回httpClient.
1012
*
13+
* @return 返回httpClient
1114
*/
1215
H getRequestHttpClient();
1316

1417
/**
15-
* 返回httpProxy
18+
* 返回httpProxy.
1619
*
20+
* @return 返回httpProxy
1721
*/
1822
P getRequestHttpProxy();
1923

24+
/**
25+
* 返回HttpType.
26+
*
27+
* @return HttpType
28+
*/
2029
HttpType getRequestType();
2130

2231
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package me.chanjar.weixin.common.util.http;
2+
3+
/**
4+
* <pre>
5+
* http请求响应回调处理接口.
6+
* Created by Binary Wang on 2018/12/8.
7+
* </pre>
8+
*
9+
* @param <T> 返回值类型
10+
* @author <a href="https://github.com/binarywang">Binary Wang</a>
11+
*/
12+
public interface ResponseHandler<T> {
13+
/**
14+
* 响应结果处理.
15+
*
16+
* @param t 要处理的对象
17+
*/
18+
void handle(T t);
19+
}

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimpleGetRequestExecutor.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package me.chanjar.weixin.common.util.http;
22

3+
import java.io.IOException;
4+
5+
import me.chanjar.weixin.common.error.WxErrorException;
36
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientSimpleGetRequestExecutor;
47
import me.chanjar.weixin.common.util.http.jodd.JoddHttpSimpleGetRequestExecutor;
58
import me.chanjar.weixin.common.util.http.okhttp.OkHttpSimpleGetRequestExecutor;
69

710
/**
8-
* 简单的GET请求执行器,请求的参数是String, 返回的结果也是String
11+
* 简单的GET请求执行器.
12+
* 请求的参数是String, 返回的结果也是String
913
*
1014
* @author Daniel Qian
1115
*/
@@ -16,6 +20,11 @@ public SimpleGetRequestExecutor(RequestHttp<H, P> requestHttp) {
1620
this.requestHttp = requestHttp;
1721
}
1822

23+
@Override
24+
public void execute(String uri, String data, ResponseHandler<String> handler) throws WxErrorException, IOException {
25+
handler.handle(this.execute(uri, data));
26+
}
27+
1928
public static RequestExecutor<String, String> create(RequestHttp requestHttp) {
2029
switch (requestHttp.getRequestType()) {
2130
case APACHE_HTTP:

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimplePostRequestExecutor.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package me.chanjar.weixin.common.util.http;
22

3+
import java.io.IOException;
4+
5+
import me.chanjar.weixin.common.error.WxErrorException;
36
import me.chanjar.weixin.common.util.http.apache.ApacheSimplePostRequestExecutor;
47
import me.chanjar.weixin.common.util.http.jodd.JoddHttpSimplePostRequestExecutor;
58
import me.chanjar.weixin.common.util.http.okhttp.OkHttpSimplePostRequestExecutor;
@@ -17,6 +20,11 @@ public SimplePostRequestExecutor(RequestHttp requestHttp) {
1720
this.requestHttp = requestHttp;
1821
}
1922

23+
@Override
24+
public void execute(String uri, String data, ResponseHandler<String> handler) throws WxErrorException, IOException {
25+
handler.handle(this.execute(uri, data));
26+
}
27+
2028
public static RequestExecutor<String, String> create(RequestHttp requestHttp) {
2129
switch (requestHttp.getRequestType()) {
2230
case APACHE_HTTP:

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/apache/ApacheHttpClientSimpleGetRequestExecutor.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package me.chanjar.weixin.common.util.http.apache;
22

3-
import me.chanjar.weixin.common.error.WxError;
4-
import me.chanjar.weixin.common.error.WxErrorException;
5-
import me.chanjar.weixin.common.util.http.RequestHttp;
6-
import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor;
3+
import java.io.IOException;
4+
75
import org.apache.http.HttpHost;
86
import org.apache.http.client.config.RequestConfig;
97
import org.apache.http.client.methods.CloseableHttpResponse;
108
import org.apache.http.client.methods.HttpGet;
119
import org.apache.http.impl.client.CloseableHttpClient;
1210

13-
import java.io.IOException;
11+
import me.chanjar.weixin.common.error.WxError;
12+
import me.chanjar.weixin.common.error.WxErrorException;
13+
import me.chanjar.weixin.common.util.http.RequestHttp;
14+
import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor;
1415

1516
/**
1617
* Created by ecoolper on 2017/5/4.

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/apache/ApacheMediaDownloadRequestExecutor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
* Created by ecoolper on 2017/5/5.
2626
*/
2727
public class ApacheMediaDownloadRequestExecutor extends BaseMediaDownloadRequestExecutor<CloseableHttpClient, HttpHost> {
28-
2928
public ApacheMediaDownloadRequestExecutor(RequestHttp requestHttp, File tmpDirFile) {
3029
super(requestHttp, tmpDirFile);
3130
}

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeBytesRequestExecutor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import me.chanjar.weixin.common.error.WxErrorException;
1919
import me.chanjar.weixin.common.util.http.RequestExecutor;
2020
import me.chanjar.weixin.common.util.http.RequestHttp;
21+
import me.chanjar.weixin.common.util.http.ResponseHandler;
2122
import me.chanjar.weixin.common.util.http.apache.InputStreamResponseHandler;
2223
import me.chanjar.weixin.common.util.http.apache.Utf8ResponseHandler;
2324

@@ -31,6 +32,11 @@ public QrcodeBytesRequestExecutor(RequestHttp requestHttp) {
3132
this.requestHttp = requestHttp;
3233
}
3334

35+
@Override
36+
public void execute(String uri, AbstractWxMaQrcodeWrapper data, ResponseHandler<byte[]> handler) throws WxErrorException, IOException {
37+
handler.handle(this.execute(uri, data));
38+
}
39+
3440
@Override
3541
public byte[] execute(String uri, AbstractWxMaQrcodeWrapper qrcodeWrapper) throws WxErrorException, IOException {
3642
HttpPost httpPost = new HttpPost(uri);

0 commit comments

Comments
 (0)