#855 http请求执行器类RequestExecutor接口增加异步执行方法

This commit is contained in:
Binary Wang
2018-12-08 20:06:28 +08:00
parent 3c391c5778
commit 29c6a0000b
24 changed files with 235 additions and 62 deletions

View File

@ -52,6 +52,8 @@ import me.chanjar.weixin.mp.bean.result.WxMpUser;
import me.chanjar.weixin.mp.enums.TicketType;
/**
* 基础实现类.
*
* @author someone
*/
public abstract class BaseWxMpServiceImpl<H, P> implements WxMpService, RequestHttp<H, P> {

View File

@ -55,6 +55,7 @@ public class WxMpTemplateMessage implements Serializable {
/**
* 模板数据.
*/
@Builder.Default
private List<WxMpTemplateData> data = new ArrayList<>();
public WxMpTemplateMessage addData(WxMpTemplateData datum) {

View File

@ -1,15 +1,21 @@
package me.chanjar.weixin.mp.util.requestexecuter.material;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import me.chanjar.weixin.common.WxType;
import me.chanjar.weixin.common.error.WxError;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.ResponseHandler;
import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo;
import okhttp3.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
/**
* Created by ecoolper on 2017/5/5.
@ -17,11 +23,15 @@ import java.io.IOException;
public class MaterialDeleteOkhttpRequestExecutor extends MaterialDeleteRequestExecutor<OkHttpClient, OkHttpProxyInfo> {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
public MaterialDeleteOkhttpRequestExecutor(RequestHttp requestHttp) {
super(requestHttp);
}
@Override
public void execute(String uri, String data, ResponseHandler<Boolean> handler) throws WxErrorException, IOException {
handler.handle(this.execute(uri, data));
}
@Override
public Boolean execute(String uri, String materialId) throws WxErrorException, IOException {
logger.debug("MaterialDeleteOkhttpRequestExecutor is running");

View File

@ -1,7 +1,11 @@
package me.chanjar.weixin.mp.util.requestexecuter.material;
import java.io.IOException;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.ResponseHandler;
public abstract class MaterialDeleteRequestExecutor<H, P> implements RequestExecutor<Boolean, String> {
protected RequestHttp<H, P> requestHttp;
@ -10,6 +14,11 @@ public abstract class MaterialDeleteRequestExecutor<H, P> implements RequestExec
this.requestHttp = requestHttp;
}
@Override
public void execute(String uri, String data, ResponseHandler<Boolean> handler) throws WxErrorException, IOException {
handler.handle(this.execute(uri, data));
}
public static RequestExecutor<Boolean, String> create(RequestHttp requestHttp) {
switch (requestHttp.getRequestType()) {
case APACHE_HTTP:

View File

@ -1,7 +1,11 @@
package me.chanjar.weixin.mp.util.requestexecuter.material;
import java.io.IOException;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.ResponseHandler;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialNews;
public abstract class MaterialNewsInfoRequestExecutor<H, P> implements RequestExecutor<WxMpMaterialNews, String> {
@ -11,6 +15,11 @@ public abstract class MaterialNewsInfoRequestExecutor<H, P> implements RequestEx
this.requestHttp = requestHttp;
}
@Override
public void execute(String uri, String data, ResponseHandler<WxMpMaterialNews> handler) throws WxErrorException, IOException {
handler.handle(this.execute(uri, data));
}
public static RequestExecutor<WxMpMaterialNews, String> create(RequestHttp requestHttp) {
switch (requestHttp.getRequestType()) {
case APACHE_HTTP:

View File

@ -1,7 +1,11 @@
package me.chanjar.weixin.mp.util.requestexecuter.material;
import java.io.IOException;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.ResponseHandler;
import me.chanjar.weixin.mp.bean.material.WxMpMaterial;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialUploadResult;
@ -15,6 +19,11 @@ public abstract class MaterialUploadRequestExecutor<H, P> implements RequestExec
this.requestHttp = requestHttp;
}
@Override
public void execute(String uri, WxMpMaterial data, ResponseHandler<WxMpMaterialUploadResult> handler) throws WxErrorException, IOException {
handler.handle(this.execute(uri, data));
}
public static RequestExecutor<WxMpMaterialUploadResult, WxMpMaterial> create(RequestHttp requestHttp) {
switch (requestHttp.getRequestType()) {
case APACHE_HTTP:

View File

@ -1,30 +1,37 @@
package me.chanjar.weixin.mp.util.requestexecuter.material;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialVideoInfoResult;
import java.io.IOException;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.ResponseHandler;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialVideoInfoResult;
public abstract class MaterialVideoInfoRequestExecutor<H, P> implements RequestExecutor<WxMpMaterialVideoInfoResult, String> {
protected RequestHttp<H, P> requestHttp;
public MaterialVideoInfoRequestExecutor(RequestHttp requestHttp) {
this.requestHttp = requestHttp;
}
this.requestHttp = requestHttp;
}
public static RequestExecutor<WxMpMaterialVideoInfoResult, String> create(RequestHttp requestHttp) {
switch (requestHttp.getRequestType()) {
case APACHE_HTTP:
return new MaterialVideoInfoApacheHttpRequestExecutor(requestHttp);
case JODD_HTTP:
return new MaterialVideoInfoJoddHttpRequestExecutor(requestHttp);
case OK_HTTP:
return new MaterialVideoInfoOkhttpRequestExecutor(requestHttp);
default:
return null;
}
}
@Override
public void execute(String uri, String data, ResponseHandler<WxMpMaterialVideoInfoResult> handler) throws WxErrorException, IOException {
handler.handle(this.execute(uri, data));
}
}
public static RequestExecutor<WxMpMaterialVideoInfoResult, String> create(RequestHttp requestHttp) {
switch (requestHttp.getRequestType()) {
case APACHE_HTTP:
return new MaterialVideoInfoApacheHttpRequestExecutor(requestHttp);
case JODD_HTTP:
return new MaterialVideoInfoJoddHttpRequestExecutor(requestHttp);
case OK_HTTP:
return new MaterialVideoInfoOkhttpRequestExecutor(requestHttp);
default:
return null;
}
}
}

View File

@ -1,13 +1,15 @@
package me.chanjar.weixin.mp.util.requestexecuter.material;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
public abstract class MaterialVoiceAndImageDownloadRequestExecutor<H, P>
implements RequestExecutor<InputStream, String> {
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.ResponseHandler;
public abstract class MaterialVoiceAndImageDownloadRequestExecutor<H, P> implements RequestExecutor<InputStream, String> {
protected RequestHttp<H, P> requestHttp;
protected File tmpDirFile;
@ -16,6 +18,11 @@ public abstract class MaterialVoiceAndImageDownloadRequestExecutor<H, P>
this.tmpDirFile = tmpDirFile;
}
@Override
public void execute(String uri, String data, ResponseHandler<InputStream> handler) throws WxErrorException, IOException {
handler.handle(this.execute(uri, data));
}
public static RequestExecutor<InputStream, String> create(RequestHttp requestHttp, File tmpDirFile) {
switch (requestHttp.getRequestType()) {
case APACHE_HTTP:

View File

@ -1,11 +1,14 @@
package me.chanjar.weixin.mp.util.requestexecuter.media;
import java.io.File;
import java.io.IOException;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.ResponseHandler;
import me.chanjar.weixin.mp.bean.material.WxMediaImgUploadResult;
import java.io.File;
/**
* @author miller
*/
@ -16,6 +19,11 @@ public abstract class MediaImgUploadRequestExecutor<H, P> implements RequestExec
this.requestHttp = requestHttp;
}
@Override
public void execute(String uri, File data, ResponseHandler<WxMediaImgUploadResult> handler) throws WxErrorException, IOException {
handler.handle(this.execute(uri, data));
}
public static RequestExecutor<WxMediaImgUploadResult, File> create(RequestHttp requestHttp) {
switch (requestHttp.getRequestType()) {
case APACHE_HTTP:

View File

@ -1,15 +1,17 @@
package me.chanjar.weixin.mp.util.requestexecuter.qrcode;
import java.io.File;
import java.io.IOException;
import me.chanjar.weixin.common.error.WxError;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.ResponseHandler;
import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket;
import java.io.File;
/**
* 获得QrCode图片 请求执行器
* 获得QrCode图片 请求执行器.
*
* @author chanjarster
*/
@ -20,6 +22,11 @@ public abstract class QrCodeRequestExecutor<H, P> implements RequestExecutor<Fil
this.requestHttp = requestHttp;
}
@Override
public void execute(String uri, WxMpQrCodeTicket data, ResponseHandler<File> handler) throws WxErrorException, IOException {
handler.handle(this.execute(uri, data));
}
public static RequestExecutor<File, WxMpQrCodeTicket> create(RequestHttp requestHttp) throws WxErrorException {
switch (requestHttp.getRequestType()) {
case APACHE_HTTP:

View File

@ -1,9 +1,12 @@
package me.chanjar.weixin.mp.util.requestexecuter.voice;
import java.io.File;
import java.io.IOException;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import java.io.File;
import me.chanjar.weixin.common.util.http.ResponseHandler;
/**
* <pre>
@ -19,6 +22,11 @@ public abstract class VoiceUploadRequestExecutor<H, P> implements RequestExecuto
this.requestHttp = requestHttp;
}
@Override
public void execute(String uri, File data, ResponseHandler<Boolean> handler) throws WxErrorException, IOException {
handler.handle(this.execute(uri, data));
}
public static RequestExecutor<Boolean, File> create(RequestHttp requestHttp) {
switch (requestHttp.getRequestType()) {
case APACHE_HTTP: