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)); | ||||
| } | } | ||||