diff --git a/pom.xml b/pom.xml
index a6a21a45..c243c16d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -206,6 +206,7 @@
**/*.pem
**/*.p12
**/*.pfx
+ **/*.jks
diff --git a/weixin4j-base/pom.xml b/weixin4j-base/pom.xml
index ea40c690..1c99922d 100644
--- a/weixin4j-base/pom.xml
+++ b/weixin4j-base/pom.xml
@@ -37,7 +37,7 @@
io.netty
netty-all
4.0.30.Final
- false
+ true
com.squareup.okhttp3
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/SimpleHttpClient.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/SimpleHttpClient.java
index d069069e..6d78e3a6 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/SimpleHttpClient.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/SimpleHttpClient.java
@@ -43,26 +43,22 @@ public class SimpleHttpClient extends AbstractHttpClient {
URLConnection urlConnection = proxy != null ? uri.toURL()
.openConnection(proxy) : uri.toURL().openConnection();
if (uri.getScheme().equals("https")) {
- try {
- SSLContext sslContext = null;
- HostnameVerifier hostnameVerifier = null;
- if (params != null) {
- sslContext = params.getSSLContext();
- hostnameVerifier = params.getHostnameVerifier();
- }
- if (sslContext == null) {
- sslContext = HttpClientFactory.allowSSLContext();
- }
- if (hostnameVerifier == null) {
- hostnameVerifier = HttpClientFactory.AllowHostnameVerifier.GLOBAL;
- }
- HttpsURLConnection connection = (HttpsURLConnection) urlConnection;
- connection.setSSLSocketFactory(sslContext.getSocketFactory());
- connection.setHostnameVerifier(hostnameVerifier);
- return connection;
- } catch (HttpClientException e) {
- throw new IOException(e);
+ SSLContext sslContext = null;
+ HostnameVerifier hostnameVerifier = null;
+ if (params != null) {
+ sslContext = params.getSSLContext();
+ hostnameVerifier = params.getHostnameVerifier();
}
+ if (sslContext == null) {
+ sslContext = HttpClientFactory.allowSSLContext();
+ }
+ if (hostnameVerifier == null) {
+ hostnameVerifier = HttpClientFactory.AllowHostnameVerifier.GLOBAL;
+ }
+ HttpsURLConnection connection = (HttpsURLConnection) urlConnection;
+ connection.setSSLSocketFactory(sslContext.getSocketFactory());
+ connection.setHostnameVerifier(hostnameVerifier);
+ return connection;
} else {
return (HttpURLConnection) urlConnection;
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java
index e4aaf8e2..6abe87e2 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java
@@ -11,7 +11,6 @@ import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;
import com.foxinmy.weixin4j.http.HttpClient;
-import com.foxinmy.weixin4j.http.HttpClientException;
import com.foxinmy.weixin4j.http.HttpParams;
import com.foxinmy.weixin4j.http.support.apache3.HttpComponent3Factory;
import com.foxinmy.weixin4j.http.support.apache4.HttpComponent4Factory;
@@ -160,7 +159,7 @@ public abstract class HttpClientFactory {
*/
public abstract HttpClient newInstance();
- public static SSLContext allowSSLContext() throws HttpClientException {
+ public static SSLContext allowSSLContext() {
try {
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null,
@@ -168,10 +167,10 @@ public abstract class HttpClientFactory {
new java.security.SecureRandom());
return sslContext;
} catch (NoSuchAlgorithmException e) {
- throw new HttpClientException(
+ throw new RuntimeException(
"Create SSLContext NoSuchAlgorithmException:", e);
} catch (KeyManagementException e) {
- throw new HttpClientException(
+ throw new RuntimeException(
"Create SSLContext KeyManagementException:", e);
}
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Factory.java
index c53c388c..97a57b74 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Factory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Factory.java
@@ -25,16 +25,19 @@ public class HttpComponent3Factory extends HttpClientFactory {
private final HttpClient httpClient;
public HttpComponent3Factory() {
- this(new HttpClient());
+ httpClient = new HttpClient();
+ httpClient.getParams().setHttpElementCharset(Consts.UTF_8.name());
+ httpClient.getParams().setParameter("http.protocol.uri-charset",
+ Consts.UTF_8.name());
+ // httpMethod.getParams().setUriCharset(Consts.UTF_8.name());
+ httpClient.getParams().setContentCharset(Consts.UTF_8.name());
+ Protocol.registerProtocol("https",
+ new Protocol("https", new SSLProtocolSocketFactory(
+ HttpClientFactory.allowSSLContext()), 443));
}
public HttpComponent3Factory(HttpClient httpClient) {
this.httpClient = httpClient;
- this.httpClient.getParams().setHttpElementCharset(Consts.UTF_8.name());
- this.httpClient.getParams().setParameter("http.protocol.uri-charset",
- Consts.UTF_8.name());
- // httpMethod.getParams().setUriCharset(Consts.UTF_8.name());
- this.httpClient.getParams().setContentCharset(Consts.UTF_8.name());
}
/**
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Response.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Response.java
index 11b6000f..e5712010 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Response.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Response.java
@@ -4,7 +4,6 @@ import java.io.IOException;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.protocol.Protocol;
import com.foxinmy.weixin4j.http.AbstractHttpResponse;
import com.foxinmy.weixin4j.http.HttpHeaders;
@@ -74,6 +73,6 @@ public class HttpComponent3Response extends AbstractHttpResponse {
@Override
public void close() {
httpMethod.releaseConnection();
- Protocol.unregisterProtocol("https");
+ //Protocol.unregisterProtocol("https");
}
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_1Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_1Factory.java
index 957b3a58..45cb43ba 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_1Factory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_1Factory.java
@@ -2,6 +2,8 @@ package com.foxinmy.weixin4j.http.support.apache4;
import java.net.InetSocketAddress;
+import javax.net.ssl.SSLContext;
+
import org.apache.http.HttpHost;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.params.ConnRoutePNames;
@@ -14,6 +16,7 @@ import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.params.CoreProtocolPNames;
import com.foxinmy.weixin4j.http.HttpClient;
+import com.foxinmy.weixin4j.http.HttpClientException;
import com.foxinmy.weixin4j.http.HttpHeaders;
import com.foxinmy.weixin4j.http.HttpParams;
import com.foxinmy.weixin4j.http.factory.HttpClientFactory;
@@ -34,14 +37,33 @@ public class HttpComponent4_1Factory extends HttpClientFactory {
/**
* 默认httpclient
- * @see HTTPCLIENT-1193
+ *
+ * @see HTTPCLIENT-1193
* @param clientConnectionManager
*/
public HttpComponent4_1Factory() {
PoolingClientConnectionManager clientConnectionManager = new PoolingClientConnectionManager();
clientConnectionManager.setMaxTotal(30);
- clientConnectionManager.setDefaultMaxPerRoute(clientConnectionManager.getMaxTotal());
- this.httpClient = new DefaultHttpClient(clientConnectionManager);
+ clientConnectionManager.setDefaultMaxPerRoute(clientConnectionManager
+ .getMaxTotal());
+ httpClient = new DefaultHttpClient(clientConnectionManager);
+ httpClient.getParams().setParameter(
+ CoreProtocolPNames.HTTP_CONTENT_CHARSET, Consts.UTF_8);
+ httpClient.getParams().setParameter(
+ CoreProtocolPNames.HTTP_ELEMENT_CHARSET, Consts.UTF_8.name());
+ httpClient.getParams().setParameter(
+ CoreProtocolPNames.STRICT_TRANSFER_ENCODING, Consts.UTF_8);
+ httpClient.getParams().setParameter(HttpHeaders.CONTENT_ENCODING,
+ Consts.UTF_8);
+ httpClient.getParams().setParameter(HttpHeaders.ACCEPT_CHARSET,
+ Consts.UTF_8);
+ SSLSocketFactory socketFactory = new SSLSocketFactory(
+ HttpClientFactory.allowSSLContext());
+ socketFactory
+ .setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+ Scheme scheme = new Scheme("https", socketFactory, 443);
+ httpClient.getConnectionManager().getSchemeRegistry().register(scheme);
}
public HttpComponent4_1Factory(org.apache.http.client.HttpClient httpClient) {
@@ -61,31 +83,15 @@ public class HttpComponent4_1Factory extends HttpClientFactory {
httpClient.getParams().setIntParameter(
CoreConnectionPNames.CONNECTION_TIMEOUT,
params.getConnectTimeout());
- httpClient.getParams().setIntParameter(
- CoreConnectionPNames.SO_TIMEOUT,
+ httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT,
params.getReadTimeout());
- httpClient.getParams().setParameter(
- CoreProtocolPNames.HTTP_CONTENT_CHARSET, Consts.UTF_8);
- httpClient.getParams().setParameter(
- CoreProtocolPNames.HTTP_ELEMENT_CHARSET, Consts.UTF_8.name());
- httpClient.getParams().setParameter(
- CoreProtocolPNames.STRICT_TRANSFER_ENCODING, Consts.UTF_8);
- httpClient.getParams().setParameter(HttpHeaders.CONTENT_ENCODING,
- Consts.UTF_8);
- httpClient.getParams().setParameter(HttpHeaders.ACCEPT_CHARSET,
- Consts.UTF_8);
if (params.getSSLContext() != null) {
- X509HostnameVerifier hostnameVerifier = null;
- if (params.getHostnameVerifier() != null) {
- hostnameVerifier = new CustomHostnameVerifier(
- params.getHostnameVerifier());
- }
- if (hostnameVerifier == null) {
- hostnameVerifier = SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
- }
SSLSocketFactory socketFactory = new SSLSocketFactory(
params.getSSLContext());
- socketFactory.setHostnameVerifier(hostnameVerifier);
+ if (params.getHostnameVerifier() != null) {
+ socketFactory.setHostnameVerifier(new CustomHostnameVerifier(
+ params.getHostnameVerifier()));
+ }
Scheme scheme = new Scheme("https", socketFactory, 443);
httpClient.getConnectionManager().getSchemeRegistry()
.register(scheme);
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_2Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_2Factory.java
index 5db04ea9..86909fe9 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_2Factory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_2Factory.java
@@ -9,7 +9,6 @@ import org.apache.http.config.ConnectionConfig;
import org.apache.http.config.SocketConfig;
import org.apache.http.conn.HttpClientConnectionManager;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.HttpProcessor;
@@ -33,8 +32,13 @@ public class HttpComponent4_2Factory extends HttpClientFactory {
private final HttpClientBuilder clientBuilder;
public HttpComponent4_2Factory() {
- this(HttpClients.custom().setDefaultConnectionConfig(
- ConnectionConfig.custom().setCharset(Consts.UTF_8).build()));
+ clientBuilder = HttpClients.custom().setDefaultConnectionConfig(
+ ConnectionConfig.custom().setCharset(Consts.UTF_8).build());
+ clientBuilder
+ .setHostnameVerifier(SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+ clientBuilder.setSSLSocketFactory(new SSLConnectionSocketFactory(
+ HttpClientFactory.allowSSLContext(),
+ SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER));
}
public HttpComponent4_2Factory(HttpClientBuilder clientBuilder) {
@@ -54,16 +58,16 @@ public class HttpComponent4_2Factory extends HttpClientFactory {
clientBuilder.setProxy(proxy);
}
if (params.getSSLContext() != null) {
- X509HostnameVerifier hostnameVerifier;
- if (params.getHostnameVerifier() != null) {
- hostnameVerifier = new CustomHostnameVerifier(
- params.getHostnameVerifier());
- } else {
- hostnameVerifier = SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
- }
- clientBuilder.setHostnameVerifier(hostnameVerifier);
- clientBuilder.setSSLSocketFactory(new SSLConnectionSocketFactory(
- params.getSSLContext(), hostnameVerifier));
+ clientBuilder
+ .setSSLSocketFactory(new SSLConnectionSocketFactory(
+ params.getSSLContext(),
+ params.getHostnameVerifier() != null ? new CustomHostnameVerifier(
+ params.getHostnameVerifier())
+ : SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER));
+ }
+ if (params.getHostnameVerifier() != null) {
+ clientBuilder.setHostnameVerifier(new CustomHostnameVerifier(params
+ .getHostnameVerifier()));
}
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient2Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient2Factory.java
index d8d5d855..5f4057d1 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient2Factory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient2Factory.java
@@ -24,7 +24,11 @@ public class OkHttpClient2Factory extends HttpClientFactory {
private final OkHttpClient okClient;
public OkHttpClient2Factory() {
- this(new OkHttpClient());
+ okClient = new OkHttpClient();
+ okClient.setHostnameVerifier(HttpClientFactory.AllowHostnameVerifier.GLOBAL);
+ okClient.setSslSocketFactory(HttpClientFactory.allowSSLContext()
+ .getSocketFactory());
+
}
public OkHttpClient2Factory(OkHttpClient okClient) {
@@ -39,13 +43,13 @@ public class OkHttpClient2Factory extends HttpClientFactory {
if (params.getProxy() != null) {
okClient.setProxy(params.getProxy());
}
- if (params.getHostnameVerifier() != null) {
- okClient.setHostnameVerifier(params.getHostnameVerifier());
- }
if (params.getSSLContext() != null) {
okClient.setSslSocketFactory(params.getSSLContext()
.getSocketFactory());
}
+ if (params.getHostnameVerifier() != null) {
+ okClient.setHostnameVerifier(params.getHostnameVerifier());
+ }
}
public OkHttpClient2Factory setWriteTimeout(int writeTimeout) {
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient3Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient3Factory.java
index c773975c..35ee0881 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient3Factory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient3Factory.java
@@ -27,7 +27,12 @@ public class OkHttpClient3Factory extends HttpClientFactory {
private final OkHttpClient.Builder clientBuilder;
public OkHttpClient3Factory() {
- this(new OkHttpClient.Builder());
+ clientBuilder = new OkHttpClient.Builder();
+ clientBuilder
+ .hostnameVerifier(HttpClientFactory.AllowHostnameVerifier.GLOBAL);
+ clientBuilder.sslSocketFactory(HttpClientFactory.allowSSLContext()
+ .getSocketFactory(),
+ HttpClientFactory.AllowX509TrustManager.GLOBAL);
}
public OkHttpClient3Factory(OkHttpClient.Builder clientBuilder) {
@@ -47,14 +52,14 @@ public class OkHttpClient3Factory extends HttpClientFactory {
if (params.getProxy() != null) {
clientBuilder.proxy(params.getProxy());
}
- if (params.getHostnameVerifier() != null) {
- clientBuilder.hostnameVerifier(params.getHostnameVerifier());
- }
if (params.getSSLContext() != null) {
clientBuilder.sslSocketFactory(params.getSSLContext()
.getSocketFactory(),
HttpClientFactory.AllowX509TrustManager.GLOBAL);
}
+ if (params.getHostnameVerifier() != null) {
+ clientBuilder.hostnameVerifier(params.getHostnameVerifier());
+ }
}
public OkHttpClient3Factory setWriteTimeout(int writeTimeout) {
@@ -101,7 +106,7 @@ public class OkHttpClient3Factory extends HttpClientFactory {
@Override
public HttpClient newInstance() {
if (okClient == null) {
- this.okClient = clientBuilder.build();
+ okClient = clientBuilder.build();
}
return new OkHttpClient3(okClient);
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClientFactory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClientFactory.java
index 525f20e8..07e9d4de 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClientFactory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClientFactory.java
@@ -16,10 +16,10 @@ public class OkHttpClientFactory extends HttpClientFactory {
private static HttpClientFactory okHttpClientFactory;
static {
try {
- okHttpClientFactory = new OkHttpClient2Factory();
+ okHttpClientFactory = new OkHttpClient3Factory();
} catch (Throwable e1) {
try {
- okHttpClientFactory = new OkHttpClient3Factory();
+ okHttpClientFactory = new OkHttpClient2Factory();
} catch (Throwable e2) {
throw new RuntimeException(e2);
}
diff --git a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/http/HttpClientTest.java b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/http/HttpClientTest.java
index ffc1fb1e..d9a15d9d 100644
--- a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/http/HttpClientTest.java
+++ b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/http/HttpClientTest.java
@@ -43,15 +43,14 @@ public abstract class HttpClientTest {
return createHttpClient(params);
}
- protected HttpClient createSSLHttpClient() throws HttpClientException {
+ protected HttpClient createSSLHttpClient() {
HttpParams params = new HttpParams();
params.setHostnameVerifier(HttpClientFactory.AllowHostnameVerifier.GLOBAL);
params.setSSLContext(HttpClientFactory.allowSSLContext());
return createHttpClient(params);
}
- protected HttpClient createProxyAndSSLHttpClient()
- throws HttpClientException {
+ protected HttpClient createProxyAndSSLHttpClient() {
HttpParams params = new HttpParams();
params.setHostnameVerifier(HttpClientFactory.AllowHostnameVerifier.GLOBAL);
params.setSSLContext(HttpClientFactory.allowSSLContext());
diff --git a/weixin4j-server/pom.xml b/weixin4j-server/pom.xml
index 56b94859..51580a6e 100644
--- a/weixin4j-server/pom.xml
+++ b/weixin4j-server/pom.xml
@@ -13,10 +13,10 @@
https://github.com/foxinmy/weixin4j/tree/master/weixin4j-server
微信消息netty服务器
-
+
io.netty
netty-all
- 4.0.23.Final
+ 4.1.8.Final
com.alibaba
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/request/WeixinRequest.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/request/WeixinRequest.java
index 5861fe49..b7bdc3aa 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/request/WeixinRequest.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/request/WeixinRequest.java
@@ -181,15 +181,25 @@ public class WeixinRequest implements HttpMessage {
return headers;
}
+ @Override
+ public DecoderResult decoderResult() {
+ return decoderResult;
+ }
+
+ @Override
+ public HttpVersion protocolVersion() {
+ return protocolVersion;
+ }
+
@Override
public String toString() {
- return "WeixinRequest [headers=" + headers.entries() + ", method=" + method
- + ", uri=" + uri + ", echoStr=" + echoStr + ", timeStamp="
- + timeStamp + ", nonce=" + nonce + ", signature=" + signature
- + ", msgSignature=" + msgSignature + ", encryptType="
- + encryptType + ", originalContent=" + originalContent
- + ", encryptContent=" + encryptContent + ", aesToken="
- + aesToken + ", decoderResult=" + decoderResult
+ return "WeixinRequest [headers=" + headers.entries() + ", method="
+ + method + ", uri=" + uri + ", echoStr=" + echoStr
+ + ", timeStamp=" + timeStamp + ", nonce=" + nonce
+ + ", signature=" + signature + ", msgSignature=" + msgSignature
+ + ", encryptType=" + encryptType + ", originalContent="
+ + originalContent + ", encryptContent=" + encryptContent
+ + ", aesToken=" + aesToken + ", decoderResult=" + decoderResult
+ ", protocolVersion=" + protocolVersion + "]";
}
}
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinMessageDecoder.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinMessageDecoder.java
index 29764cc3..75b04fa1 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinMessageDecoder.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinMessageDecoder.java
@@ -60,10 +60,10 @@ public class WeixinMessageDecoder extends
protected void decode(ChannelHandlerContext ctx, FullHttpRequest req,
List