From f7f2121fcae5211a3d9c47f1cc9b78f4abdbd523 Mon Sep 17 00:00:00 2001 From: yiyi910 Date: Tue, 7 Sep 2021 22:43:10 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20#2301=20=E3=80=90=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E3=80=91=E4=BF=AE=E5=A4=8D=E7=94=9F=E6=88=90=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E7=A0=81=E7=9A=84okhttp=E4=B8=8EJodd?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=B1=BB=E5=BD=93=E5=BE=AE=E4=BF=A1=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E6=8A=A5=E9=94=99=E6=97=B6=E4=B8=8D=E4=BC=9A=E6=8A=9B?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JoddHttpQrcodeFileRequestExecutor.java | 9 ++- .../JoddQrcodeBytesRequestExecutor.java | 55 +++++++++++++++++++ .../OkHttpQrcodeBytesRequestExecutor.java | 6 +- .../OkHttpQrcodeFileRequestExecutor.java | 6 +- 4 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/JoddQrcodeBytesRequestExecutor.java diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/JoddHttpQrcodeFileRequestExecutor.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/JoddHttpQrcodeFileRequestExecutor.java index 714a857ae..d63e29c5d 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/JoddHttpQrcodeFileRequestExecutor.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/JoddHttpQrcodeFileRequestExecutor.java @@ -57,12 +57,15 @@ public class JoddHttpQrcodeFileRequestExecutor extends QrcodeRequestExecutor { + + + public JoddQrcodeBytesRequestExecutor(RequestHttp requestHttp) { + super(requestHttp); + } + + /** + * 执行http请求. + * + * @param uri uri + * @param qrcodeWrapper 数据 + * @param wxType 微信模块类型 + * @return 响应结果 + * @throws WxErrorException 自定义异常 + * @throws IOException io异常 + */ + @Override + public byte[] execute(String uri, AbstractWxMaQrcodeWrapper qrcodeWrapper, WxType wxType) throws WxErrorException, IOException { + HttpRequest request = HttpRequest.get(uri); + if (requestHttp.getRequestHttpProxy() != null) { + requestHttp.getRequestHttpClient().useProxy(requestHttp.getRequestHttpProxy()); + } + request.withConnectionProvider(requestHttp.getRequestHttpClient()); + + HttpResponse response = request.send(); + response.charset(StandardCharsets.UTF_8.name()); + String contentTypeHeader = response.header("Content-Type"); + if (MimeTypes.MIME_APPLICATION_JSON.equals(contentTypeHeader)) { + String responseContent = response.bodyText(); + throw new WxErrorException(WxError.fromJson(responseContent, wxType)); + } + return response.bodyBytes(); + } +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpQrcodeBytesRequestExecutor.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpQrcodeBytesRequestExecutor.java index 9a1c677af..d716987ce 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpQrcodeBytesRequestExecutor.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpQrcodeBytesRequestExecutor.java @@ -35,13 +35,13 @@ public class OkHttpQrcodeBytesRequestExecutor extends QrcodeBytesRequestExecutor */ @Override public byte[] execute(String uri, AbstractWxMaQrcodeWrapper qrcodeWrapper, WxType wxType) throws WxErrorException, IOException { - RequestBody body = RequestBody.Companion.create(qrcodeWrapper.toJson(), MediaType.parse("text/plain; charset=utf-8")); + RequestBody body = RequestBody.Companion.create(qrcodeWrapper.toJson(), MediaType.parse("application/json; charset=utf-8")); Request request = new Request.Builder().url(uri).post(body).build(); Response response = requestHttp.getRequestHttpClient().newCall(request).execute(); String contentTypeHeader = response.header("Content-Type"); - if ("text/plain".equals(contentTypeHeader)) { + if (null != contentTypeHeader && contentTypeHeader.startsWith("application/json")) { String responseContent = response.body().string(); - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MP)); + throw new WxErrorException(WxError.fromJson(responseContent, wxType)); } try (InputStream inputStream = response.body().byteStream()) { diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpQrcodeFileRequestExecutor.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpQrcodeFileRequestExecutor.java index ff59c915a..d04bfb3e2 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpQrcodeFileRequestExecutor.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpQrcodeFileRequestExecutor.java @@ -41,13 +41,13 @@ public class OkHttpQrcodeFileRequestExecutor extends QrcodeRequestExecutor