Browse Source

Merge pull request #241 from crskyp/develop

jodd response 编码设置为UTF-8,解决response乱码问题
master
crskyp 8 years ago
committed by GitHub
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 View File

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
import jodd.http.HttpRequest; import jodd.http.HttpRequest;
import jodd.http.HttpResponse; import jodd.http.HttpResponse;
import jodd.http.ProxyInfo; import jodd.http.ProxyInfo;
import jodd.util.StringPool;

import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.fs.FileUtils; import me.chanjar.weixin.common.util.fs.FileUtils;
@@ -44,6 +46,8 @@ public class JoddMediaDownloadRequestExecutor extends MediaDownloadRequestExecut
request.withConnectionProvider(requestHttp.getRequestHttpClient()); request.withConnectionProvider(requestHttp.getRequestHttpClient());


HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);

String contentType = response.header("Content-Type"); String contentType = response.header("Content-Type");
if (contentType != null && contentType.startsWith("application/json")) { if (contentType != null && contentType.startsWith("application/json")) {
// application/json; encoding=utf-8 下载媒体文件出错 // application/json; encoding=utf-8 下载媒体文件出错


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

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
import jodd.http.HttpRequest; import jodd.http.HttpRequest;
import jodd.http.HttpResponse; import jodd.http.HttpResponse;
import jodd.http.ProxyInfo; import jodd.http.ProxyInfo;
import jodd.util.StringPool;

import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
@@ -30,6 +32,8 @@ public class JoddMediaUploadRequestExecutor extends MediaUploadRequestExecutor<H
request.withConnectionProvider(requestHttp.getRequestHttpClient()); request.withConnectionProvider(requestHttp.getRequestHttpClient());
request.form("media", file); request.form("media", file);
HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);

String responseContent = response.bodyText(); String responseContent = response.bodyText();
WxError error = WxError.fromJson(responseContent); WxError error = WxError.fromJson(responseContent);
if (error.getErrorCode() != 0) { if (error.getErrorCode() != 0) {


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

@@ -1,9 +1,8 @@
package me.chanjar.weixin.common.util.http.jodd; 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.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp; import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -35,7 +34,10 @@ public class JoddSimpleGetRequestExecutor extends SimpleGetRequestExecutor<HttpC
} }
request.withConnectionProvider(requestHttp.getRequestHttpClient()); request.withConnectionProvider(requestHttp.getRequestHttpClient());
HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);

String responseContent = response.bodyText(); String responseContent = response.bodyText();

WxError error = WxError.fromJson(responseContent); WxError error = WxError.fromJson(responseContent);
if (error.getErrorCode() != 0) { if (error.getErrorCode() != 0) {
throw new WxErrorException(error); throw new WxErrorException(error);


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

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
import jodd.http.HttpRequest; import jodd.http.HttpRequest;
import jodd.http.HttpResponse; import jodd.http.HttpResponse;
import jodd.http.ProxyInfo; import jodd.http.ProxyInfo;
import jodd.util.StringPool;

import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp; import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -34,6 +36,7 @@ public class JoddSimplePostRequestExecutor extends SimplePostRequestExecutor<Htt
request.bodyText(postEntity); request.bodyText(postEntity);
} }
HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);


String responseContent = response.bodyText(); String responseContent = response.bodyText();
if (responseContent.isEmpty()) { if (responseContent.isEmpty()) {


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

@@ -1,30 +1,33 @@
package me.chanjar.weixin.mp.util.http; 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> { public abstract class MaterialVideoInfoRequestExecutor<H, P> implements RequestExecutor<WxMpMaterialVideoInfoResult, String> {
protected RequestHttp<H, P> requestHttp; protected RequestHttp<H, P> requestHttp;


public MaterialVideoInfoRequestExecutor(RequestHttp 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 View File

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
import jodd.http.HttpRequest; import jodd.http.HttpRequest;
import jodd.http.HttpResponse; import jodd.http.HttpResponse;
import jodd.http.ProxyInfo; import jodd.http.ProxyInfo;
import jodd.util.StringPool;

import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp; import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -29,6 +31,7 @@ public class JoddMaterialDeleteRequestExecutor extends MaterialDeleteRequestExec


request.query("media_id", materialId); request.query("media_id", materialId);
HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);
String responseContent = response.bodyText(); String responseContent = response.bodyText();
WxError error = WxError.fromJson(responseContent); WxError error = WxError.fromJson(responseContent);
if (error.getErrorCode() != 0) { if (error.getErrorCode() != 0) {


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

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
import jodd.http.HttpRequest; import jodd.http.HttpRequest;
import jodd.http.HttpResponse; import jodd.http.HttpResponse;
import jodd.http.ProxyInfo; import jodd.http.ProxyInfo;
import jodd.util.StringPool;

import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp; import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -31,6 +33,7 @@ public class JoddMaterialNewsInfoRequestExecutor extends MaterialNewsInfoRequest


request.query("media_id", materialId); request.query("media_id", materialId);
HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);


String responseContent = response.bodyText(); String responseContent = response.bodyText();
WxError error = WxError.fromJson(responseContent); WxError error = WxError.fromJson(responseContent);


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

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
import jodd.http.HttpRequest; import jodd.http.HttpRequest;
import jodd.http.HttpResponse; import jodd.http.HttpResponse;
import jodd.http.ProxyInfo; import jodd.http.ProxyInfo;
import jodd.util.StringPool;

import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp; import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -48,6 +50,7 @@ public class JoddMaterialUploadRequestExecutor extends MaterialUploadRequestExec
} }


HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);
String responseContent = response.bodyText(); String responseContent = response.bodyText();
WxError error = WxError.fromJson(responseContent); WxError error = WxError.fromJson(responseContent);
if (error.getErrorCode() != 0) { if (error.getErrorCode() != 0) {


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

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
import jodd.http.HttpRequest; import jodd.http.HttpRequest;
import jodd.http.HttpResponse; import jodd.http.HttpResponse;
import jodd.http.ProxyInfo; import jodd.http.ProxyInfo;
import jodd.util.StringPool;

import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp; import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -30,6 +32,7 @@ public class JoddMaterialVideoInfoRequestExecutor extends MaterialVideoInfoReque


request.query("media_id", materialId); request.query("media_id", materialId);
HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);
String responseContent = response.bodyText(); String responseContent = response.bodyText();
WxError error = WxError.fromJson(responseContent); WxError error = WxError.fromJson(responseContent);
if (error.getErrorCode() != 0) { if (error.getErrorCode() != 0) {


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

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
import jodd.http.HttpRequest; import jodd.http.HttpRequest;
import jodd.http.HttpResponse; import jodd.http.HttpResponse;
import jodd.http.ProxyInfo; import jodd.http.ProxyInfo;
import jodd.util.StringPool;

import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp; import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -34,6 +36,7 @@ public class JoddMaterialVoiceAndImageDownloadRequestExecutor extends MaterialVo


request.query("media_id", materialId); request.query("media_id", materialId);
HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);
try (InputStream inputStream = new ByteArrayInputStream(response.bodyBytes())) { try (InputStream inputStream = new ByteArrayInputStream(response.bodyBytes())) {
// 下载媒体文件出错 // 下载媒体文件出错
byte[] responseContent = IOUtils.toByteArray(inputStream); byte[] responseContent = IOUtils.toByteArray(inputStream);


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

@@ -4,6 +4,8 @@ import jodd.http.HttpConnectionProvider;
import jodd.http.HttpRequest; import jodd.http.HttpRequest;
import jodd.http.HttpResponse; import jodd.http.HttpResponse;
import jodd.http.ProxyInfo; import jodd.http.ProxyInfo;
import jodd.util.StringPool;

import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp; import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -35,6 +37,7 @@ public class JoddMediaImgUploadRequestExecutor extends MediaImgUploadRequestExec


request.form("media", data); request.form("media", data);
HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);
String responseContent = response.bodyText(); String responseContent = response.bodyText();
WxError error = WxError.fromJson(responseContent); WxError error = WxError.fromJson(responseContent);
if (error.getErrorCode() != 0) { if (error.getErrorCode() != 0) {


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

@@ -5,6 +5,8 @@ import jodd.http.HttpRequest;
import jodd.http.HttpResponse; import jodd.http.HttpResponse;
import jodd.http.ProxyInfo; import jodd.http.ProxyInfo;
import jodd.util.MimeTypes; import jodd.util.MimeTypes;
import jodd.util.StringPool;

import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.fs.FileUtils; import me.chanjar.weixin.common.util.fs.FileUtils;
@@ -45,6 +47,7 @@ public class JoddQrCodeRequestExecutor extends QrCodeRequestExecutor<HttpConnect
request.withConnectionProvider(requestHttp.getRequestHttpClient()); request.withConnectionProvider(requestHttp.getRequestHttpClient());


HttpResponse response = request.send(); HttpResponse response = request.send();
response.charset(StringPool.UTF_8);
String contentTypeHeader = response.header("Content-Type"); String contentTypeHeader = response.header("Content-Type");
if (MimeTypes.MIME_TEXT_PLAIN.equals(contentTypeHeader)) { if (MimeTypes.MIME_TEXT_PLAIN.equals(contentTypeHeader)) {
String responseContent = response.bodyText(); String responseContent = response.bodyText();


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

@@ -1,6 +1,5 @@
package me.chanjar.weixin.mp.util.http.okhttp; 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.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.fs.FileUtils; 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.common.util.http.okhttp.OkhttpProxyInfo;
import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket; import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket;
import me.chanjar.weixin.mp.util.http.QrCodeRequestExecutor; import me.chanjar.weixin.mp.util.http.QrCodeRequestExecutor;

import okhttp3.*; import okhttp3.*;


import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
@@ -47,7 +47,7 @@ public class OkhttpQrCodeRequestExecutor extends QrCodeRequestExecutor<Connectio
Request request = new Request.Builder().url(uri).get().build(); Request request = new Request.Builder().url(uri).get().build();
Response response = client.newCall(request).execute(); Response response = client.newCall(request).execute();
String contentTypeHeader = response.header("Content-Type"); String contentTypeHeader = response.header("Content-Type");
if (MimeTypes.MIME_TEXT_PLAIN.equals(contentTypeHeader)) {
if ("text/plain".equals(contentTypeHeader)) {
String responseContent = response.body().string(); String responseContent = response.body().string();
throw new WxErrorException(WxError.fromJson(responseContent)); throw new WxErrorException(WxError.fromJson(responseContent));
} }


Loading…
Cancel
Save