#356 修复QrCodeRequestExecutor类MimeType比较的bug

This commit is contained in:
Binary Wang
2017-10-18 12:27:11 +08:00
parent 64f0e7cf6b
commit 0f007d970b
3 changed files with 8 additions and 5 deletions

View File

@@ -48,7 +48,8 @@ public class QrCodeRequestExecutor implements RequestExecutor<File, AbstractWxMa
InputStream inputStream = InputStreamResponseHandler.INSTANCE.handleResponse(response);) { InputStream inputStream = InputStreamResponseHandler.INSTANCE.handleResponse(response);) {
Header[] contentTypeHeader = response.getHeaders("Content-Type"); Header[] contentTypeHeader = response.getHeaders("Content-Type");
if (contentTypeHeader != null && contentTypeHeader.length > 0 if (contentTypeHeader != null && contentTypeHeader.length > 0
&& ContentType.APPLICATION_JSON.getMimeType().equals(contentTypeHeader[0].getValue())) { && ContentType.APPLICATION_JSON.getMimeType()
.equals(ContentType.parse(contentTypeHeader[0].getValue()).getMimeType())) {
String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response);
throw new WxErrorException(WxError.fromJson(responseContent)); throw new WxErrorException(WxError.fromJson(responseContent));
} }

View File

@@ -1,5 +1,7 @@
package me.chanjar.weixin.mp.util.http; package me.chanjar.weixin.mp.util.http;
import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor; import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp; import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket; import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket;
@@ -21,7 +23,7 @@ public abstract class QrCodeRequestExecutor<H, P> implements RequestExecutor<Fil
this.requestHttp = requestHttp; this.requestHttp = requestHttp;
} }
public static RequestExecutor<File, WxMpQrCodeTicket> create(RequestHttp requestHttp) { public static RequestExecutor<File, WxMpQrCodeTicket> create(RequestHttp requestHttp) throws WxErrorException {
switch (requestHttp.getRequestType()) { switch (requestHttp.getRequestType()) {
case APACHE_HTTP: case APACHE_HTTP:
return new ApacheQrCodeRequestExecutor(requestHttp); return new ApacheQrCodeRequestExecutor(requestHttp);
@@ -30,8 +32,7 @@ public abstract class QrCodeRequestExecutor<H, P> implements RequestExecutor<Fil
case OK_HTTP: case OK_HTTP:
return new OkhttpQrCodeRequestExecutor(requestHttp); return new OkhttpQrCodeRequestExecutor(requestHttp);
default: default:
//TODO 需要优化,最好抛出异常 throw new WxErrorException(WxError.newBuilder().setErrorMsg("不支持的http框架").build());
return null;
} }
} }

View File

@@ -52,7 +52,8 @@ public class ApacheQrCodeRequestExecutor extends QrCodeRequestExecutor<Closeable
Header[] contentTypeHeader = response.getHeaders("Content-Type"); Header[] contentTypeHeader = response.getHeaders("Content-Type");
if (contentTypeHeader != null && contentTypeHeader.length > 0) { if (contentTypeHeader != null && contentTypeHeader.length > 0) {
// 出错 // 出错
if (ContentType.TEXT_PLAIN.getMimeType().equals(contentTypeHeader[0].getValue())) { if (ContentType.TEXT_PLAIN.getMimeType()
.equals(ContentType.parse(contentTypeHeader[0].getValue()).getMimeType())) {
String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response);
throw new WxErrorException(WxError.fromJson(responseContent)); throw new WxErrorException(WxError.fromJson(responseContent));
} }