jodd response 编码设置为UTF-8,解决response乱码问题master
@@ -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,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) { | ||||
@@ -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); | ||||
@@ -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()) { | ||||
@@ -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; | |||||
} | |||||
} | |||||
} |
@@ -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) { | ||||
@@ -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); | ||||
@@ -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) { | ||||
@@ -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) { | ||||
@@ -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); | ||||
@@ -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) { | ||||
@@ -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(); | ||||
@@ -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)); | ||||
} | } | ||||