Browse Source

Merge pull request #241 from crskyp/develop

jodd response 编码设置为UTF-8,解决response乱码问题
crskyp 8 years ago
parent
commit
3b7c0a7064
13 changed files with 66 additions and 29 deletions
  1. 4 0
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddMediaDownloadRequestExecutor.java
  2. 4 0
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddMediaUploadRequestExecutor.java
  3. 6 4
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddSimpleGetRequestExecutor.java
  4. 3 0
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddSimplePostRequestExecutor.java
  5. 26 23
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialVideoInfoRequestExecutor.java
  6. 3 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialDeleteRequestExecutor.java
  7. 3 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialNewsInfoRequestExecutor.java
  8. 3 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialUploadRequestExecutor.java
  9. 3 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialVideoInfoRequestExecutor.java
  10. 3 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialVoiceAndImageDownloadRequestExecutor.java
  11. 3 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMediaImgUploadRequestExecutor.java
  12. 3 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddQrCodeRequestExecutor.java
  13. 2 2
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/okhttp/OkhttpQrCodeRequestExecutor.java

+ 4 - 0
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddMediaDownloadRequestExecutor.java

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
 import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.fs.FileUtils;
@@ -44,6 +46,8 @@ public class JoddMediaDownloadRequestExecutor extends MediaDownloadRequestExecut
     request.withConnectionProvider(requestHttp.getRequestHttpClient());
 
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
+
     String contentType = response.header("Content-Type");
     if (contentType != null && contentType.startsWith("application/json")) {
       // application/json; encoding=utf-8 下载媒体文件出错

+ 4 - 0
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddMediaUploadRequestExecutor.java

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
 import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
 import me.chanjar.weixin.common.exception.WxErrorException;
@@ -30,6 +32,8 @@ public class JoddMediaUploadRequestExecutor extends MediaUploadRequestExecutor<H
     request.withConnectionProvider(requestHttp.getRequestHttpClient());
     request.form("media", file);
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
+
     String responseContent = response.bodyText();
     WxError error = WxError.fromJson(responseContent);
     if (error.getErrorCode() != 0) {

+ 6 - 4
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddSimpleGetRequestExecutor.java

@@ -1,9 +1,8 @@
 package me.chanjar.weixin.common.util.http.jodd;
 
-import jodd.http.HttpConnectionProvider;
-import jodd.http.HttpRequest;
-import jodd.http.HttpResponse;
-import jodd.http.ProxyInfo;
+import jodd.http.*;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -35,7 +34,10 @@ public class JoddSimpleGetRequestExecutor extends SimpleGetRequestExecutor<HttpC
     }
     request.withConnectionProvider(requestHttp.getRequestHttpClient());
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
+
     String responseContent = response.bodyText();
+
     WxError error = WxError.fromJson(responseContent);
     if (error.getErrorCode() != 0) {
       throw new WxErrorException(error);

+ 3 - 0
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddSimplePostRequestExecutor.java

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
 import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -34,6 +36,7 @@ public class JoddSimplePostRequestExecutor extends SimplePostRequestExecutor<Htt
       request.bodyText(postEntity);
     }
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
 
     String responseContent = response.bodyText();
     if (responseContent.isEmpty()) {

+ 26 - 23
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialVideoInfoRequestExecutor.java

@@ -1,30 +1,33 @@
 package me.chanjar.weixin.mp.util.http;
 
-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 me.chanjar.weixin.mp.util.http.apache.ApacheMaterialVideoInfoRequestExecutor;
-import me.chanjar.weixin.mp.util.http.jodd.JoddMaterialVideoInfoRequestExecutor;
-import me.chanjar.weixin.mp.util.http.okhttp.OkhttpMaterialVideoInfoRequestExecutor;
+
+  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 me.chanjar.weixin.mp.util.http.apache.ApacheMaterialVideoInfoRequestExecutor;
+  import me.chanjar.weixin.mp.util.http.jodd.JoddMaterialVideoInfoRequestExecutor;
+  import me.chanjar.weixin.mp.util.http.okhttp.OkhttpMaterialVideoInfoRequestExecutor;
+
 
 public abstract class MaterialVideoInfoRequestExecutor<H, P> implements RequestExecutor<WxMpMaterialVideoInfoResult, String> {
   protected RequestHttp<H, P> requestHttp;
 
   public MaterialVideoInfoRequestExecutor(RequestHttp requestHttp) {
-    this.requestHttp = requestHttp;
-  }
-
-  public static RequestExecutor<WxMpMaterialVideoInfoResult, String> create(RequestHttp requestHttp) {
-    switch (requestHttp.getRequestType()) {
-      case apacheHttp:
-        return new ApacheMaterialVideoInfoRequestExecutor(requestHttp);
-      case joddHttp:
-        return new JoddMaterialVideoInfoRequestExecutor(requestHttp);
-      case okHttp:
-        return new OkhttpMaterialVideoInfoRequestExecutor(requestHttp);
-      default:
-        return null;
-    }
-  }
-
-}
+          this.requestHttp = requestHttp;
+        }
+
+        public static RequestExecutor<WxMpMaterialVideoInfoResult, String> create(RequestHttp requestHttp) {
+          switch (requestHttp.getRequestType()) {
+            case apacheHttp:
+              return new ApacheMaterialVideoInfoRequestExecutor(requestHttp);
+            case joddHttp:
+              return new JoddMaterialVideoInfoRequestExecutor(requestHttp);
+            case okHttp:
+              return new OkhttpMaterialVideoInfoRequestExecutor(requestHttp);
+            default:
+              return null;
+          }
+        }
+
+      }

+ 3 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialDeleteRequestExecutor.java

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
 import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -29,6 +31,7 @@ public class JoddMaterialDeleteRequestExecutor extends MaterialDeleteRequestExec
 
     request.query("media_id", materialId);
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
     String responseContent = response.bodyText();
     WxError error = WxError.fromJson(responseContent);
     if (error.getErrorCode() != 0) {

+ 3 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialNewsInfoRequestExecutor.java

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
 import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -31,6 +33,7 @@ public class JoddMaterialNewsInfoRequestExecutor extends MaterialNewsInfoRequest
 
     request.query("media_id", materialId);
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
 
     String responseContent = response.bodyText();
     WxError error = WxError.fromJson(responseContent);

+ 3 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialUploadRequestExecutor.java

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
 import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -48,6 +50,7 @@ public class JoddMaterialUploadRequestExecutor extends MaterialUploadRequestExec
     }
 
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
     String responseContent = response.bodyText();
     WxError error = WxError.fromJson(responseContent);
     if (error.getErrorCode() != 0) {

+ 3 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialVideoInfoRequestExecutor.java

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
 import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -30,6 +32,7 @@ public class JoddMaterialVideoInfoRequestExecutor extends MaterialVideoInfoReque
 
     request.query("media_id", materialId);
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
     String responseContent = response.bodyText();
     WxError error = WxError.fromJson(responseContent);
     if (error.getErrorCode() != 0) {

+ 3 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialVoiceAndImageDownloadRequestExecutor.java

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
 import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -34,6 +36,7 @@ public class JoddMaterialVoiceAndImageDownloadRequestExecutor extends MaterialVo
 
     request.query("media_id", materialId);
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
     try (InputStream inputStream = new ByteArrayInputStream(response.bodyBytes())) {
       // 下载媒体文件出错
       byte[] responseContent = IOUtils.toByteArray(inputStream);

+ 3 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMediaImgUploadRequestExecutor.java

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
 import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -35,6 +37,7 @@ public class JoddMediaImgUploadRequestExecutor extends MediaImgUploadRequestExec
 
     request.form("media", data);
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
     String responseContent = response.bodyText();
     WxError error = WxError.fromJson(responseContent);
     if (error.getErrorCode() != 0) {

+ 3 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddQrCodeRequestExecutor.java

@@ -5,6 +5,8 @@ import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
 import jodd.util.MimeTypes;
+import jodd.util.StringPool;
+
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.fs.FileUtils;
@@ -45,6 +47,7 @@ public class JoddQrCodeRequestExecutor extends QrCodeRequestExecutor<HttpConnect
     request.withConnectionProvider(requestHttp.getRequestHttpClient());
 
     HttpResponse response = request.send();
+    response.charset(StringPool.UTF_8);
     String contentTypeHeader = response.header("Content-Type");
     if (MimeTypes.MIME_TEXT_PLAIN.equals(contentTypeHeader)) {
       String responseContent = response.bodyText();

+ 2 - 2
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/okhttp/OkhttpQrCodeRequestExecutor.java

@@ -1,6 +1,5 @@
 package me.chanjar.weixin.mp.util.http.okhttp;
 
-import jodd.util.MimeTypes;
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.fs.FileUtils;
@@ -8,6 +7,7 @@ import me.chanjar.weixin.common.util.http.RequestHttp;
 import me.chanjar.weixin.common.util.http.okhttp.OkhttpProxyInfo;
 import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket;
 import me.chanjar.weixin.mp.util.http.QrCodeRequestExecutor;
+
 import okhttp3.*;
 
 import java.io.ByteArrayInputStream;
@@ -47,7 +47,7 @@ public class OkhttpQrCodeRequestExecutor extends QrCodeRequestExecutor<Connectio
     Request request = new Request.Builder().url(uri).get().build();
     Response response = client.newCall(request).execute();
     String contentTypeHeader = response.header("Content-Type");
-    if (MimeTypes.MIME_TEXT_PLAIN.equals(contentTypeHeader)) {
+    if ("text/plain".equals(contentTypeHeader)) {
       String responseContent = response.body().string();
       throw new WxErrorException(WxError.fromJson(responseContent));
     }