diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3.java index 65552e71..33514a80 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3.java @@ -116,8 +116,9 @@ public class HttpComponent3 extends AbstractHttpClient { .setConnectionTimeout(params.getConnectTimeout()); httpClient.getHttpConnectionManager().getParams() .setSendBufferSize(params.getChunkSize()); - httpMethod.getParams().setUriCharset(Consts.UTF_8.name()); httpMethod.getParams().setSoTimeout(params.getSocketTimeout()); + httpMethod.getParams().setHttpElementCharset(Consts.UTF_8.name()); + httpMethod.getParams().setUriCharset(Consts.UTF_8.name()); httpMethod.getParams().setContentCharset(Consts.UTF_8.name()); } if (useSSL) { diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent4_1.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent4_1.java index 28d2ea68..0073c7ea 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent4_1.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent4_1.java @@ -70,6 +70,10 @@ public class HttpComponent4_1 extends HttpComponent4 { params.getConnectTimeout()); uriRequest.getParams().setParameter( CoreProtocolPNames.HTTP_CONTENT_CHARSET, Consts.UTF_8); + uriRequest.getParams().setParameter( + CoreProtocolPNames.HTTP_ELEMENT_CHARSET, Consts.UTF_8.name()); + uriRequest.getParams().setParameter( + CoreProtocolPNames.STRICT_TRANSFER_ENCODING, Consts.UTF_8); uriRequest.getParams().setParameter( HttpHeaders.CONTENT_ENCODING, Consts.UTF_8); uriRequest.getParams().setParameter(HttpHeaders.ACCEPT_CHARSET, diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent4_2.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent4_2.java index a4c37e0d..1031f0f7 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent4_2.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent4_2.java @@ -10,15 +10,18 @@ import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig.Builder; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.config.ConnectionConfig; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.X509HostnameVerifier; import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import com.foxinmy.weixin4j.http.HttpClientException; import com.foxinmy.weixin4j.http.HttpParams; import com.foxinmy.weixin4j.http.HttpRequest; import com.foxinmy.weixin4j.http.HttpResponse; +import com.foxinmy.weixin4j.model.Consts; /** * Requires Apache HttpComponents 4.3 or higher @@ -34,7 +37,11 @@ public class HttpComponent4_2 extends HttpComponent4 { private CloseableHttpClient httpClient; public HttpComponent4_2() { - this.httpClient = HttpClients.createDefault(); + this.httpClient = HttpClientBuilder + .create() + .setDefaultConnectionConfig( + ConnectionConfig.custom().setCharset(Consts.UTF_8) + .build()).build(); } @Override @@ -74,8 +81,12 @@ public class HttpComponent4_2 extends HttpComponent4 { if (hostnameVerifier == null) { hostnameVerifier = SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER; } - httpClient = HttpClients.custom() + httpClient = HttpClients + .custom() .setHostnameVerifier(hostnameVerifier) + .setDefaultConnectionConfig( + ConnectionConfig.custom() + .setCharset(Consts.UTF_8).build()) .setSslcontext(sslContext).build(); } addHeaders(request.getHeaders(), uriRequest); diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinRequestExecutor.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinRequestExecutor.java index 1a70b13c..257efbec 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinRequestExecutor.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinRequestExecutor.java @@ -80,8 +80,8 @@ public class WeixinRequestExecutor { public WeixinResponse post(String url, FormBodyPart... bodyParts) throws WeixinException { - MultipartEntity entity = new MultipartEntity(HttpMultipartMode.STRICT, - null, Consts.UTF_8); + MultipartEntity entity = new MultipartEntity( + HttpMultipartMode.BROWSER_COMPATIBLE, null, Consts.UTF_8); for (FormBodyPart bodyPart : bodyParts) { entity.addPart(bodyPart); } diff --git a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/HttpClientTest.java b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/HttpClientTest.java index 9c55913c..050b427d 100644 --- a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/HttpClientTest.java +++ b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/HttpClientTest.java @@ -12,27 +12,32 @@ import com.foxinmy.weixin4j.http.HttpParams; import com.foxinmy.weixin4j.http.HttpRequest; import com.foxinmy.weixin4j.http.HttpResponse; import com.foxinmy.weixin4j.http.factory.HttpClientFactory; +import com.foxinmy.weixin4j.http.factory.HttpComponent3Factory; import com.foxinmy.weixin4j.http.factory.HttpComponent4Factory; +import com.foxinmy.weixin4j.http.factory.Netty4HttpClientFactory; +import com.foxinmy.weixin4j.http.factory.SimpleHttpClientFactory; import com.foxinmy.weixin4j.util.IOUtil; public class HttpClientTest { static HttpRequest request = new HttpRequest(HttpMethod.GET, - "https://www.baidu.com"); + "http://www.iteye.com/"); static { HttpParams params = new HttpParams(); params.setProxy(new Proxy(Type.HTTP, new InetSocketAddress( "117.136.234.9", 80))); - request.setParams(params); + //request.setParams(params); } public static void test1() throws HttpClientException { + HttpClientFactory.setDefaultFactory(new SimpleHttpClientFactory()); HttpClient httpClient = HttpClientFactory.getInstance(); HttpResponse response = httpClient.execute(request); print(response); } public static void test2() throws HttpClientException { + HttpClientFactory.setDefaultFactory(new HttpComponent3Factory()); HttpClient httpClient = HttpClientFactory.getInstance(); HttpResponse response = httpClient.execute(request); print(response); @@ -45,25 +50,29 @@ public class HttpClientTest { print(response); } + public static void test4() throws HttpClientException { + HttpClientFactory.setDefaultFactory(new Netty4HttpClientFactory()); + HttpClient httpClient = HttpClientFactory.getInstance(); + HttpResponse response = httpClient.execute(request); + print(response); + } + public static void print(HttpResponse response) throws HttpClientException { - System.err.println(response.getStatus()); try { System.err.println(new String( IOUtil.toByteArray(response.getBody()))); } catch (IOException e) { - // TODO Auto-generated catch block e.printStackTrace(); } - System.err.println(response.getHeaders()); - System.err.println(response.getProtocol()); } public static void main(String[] args) throws Exception { test1(); System.out.println("---------------------"); - // test2(); + test2(); System.out.println("---------------------"); - // test3(); - // test4(); + test3(); + System.out.println("---------------------"); + test4(); } } diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java index 8d8a2c14..f8170f67 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java @@ -381,7 +381,7 @@ public class WeixinProxy { /** * 获取永久媒体素材的总数
.图片和图文消息素材(包括单图文和多图文)的总数上限为5000,其他素材的总数上限为1000 * - * @return 总数对象 + * @return 总数对象 * @throws WeixinException * @see com.foxinmy.weixin4j.mp.model.MediaCounter * @see 查询群发状态 */ diff --git a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java index d3325bbf..40011b1a 100644 --- a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java +++ b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java @@ -54,8 +54,10 @@ public class MediaTest extends TokenTest { @Test public void download1() throws WeixinException, IOException { - MediaDownloadResult content = mediaApi.downloadMedia( - "BmzcrM2jaJXZCjBqxLwyC03kh5pge3CbrBqXP4XbYBCeKr7xz-rHuwPf4vYLVdL1", false); + MediaDownloadResult content = mediaApi + .downloadMedia( + "BmzcrM2jaJXZCjBqxLwyC03kh5pge3CbrBqXP4XbYBCeKr7xz-rHuwPf4vYLVdL1", + false); Assert.assertTrue(content != null); System.err.println(content); } diff --git a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/MediaTest.java b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/MediaTest.java index 32ddf2f1..dd2e4e69 100644 --- a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/MediaTest.java +++ b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/MediaTest.java @@ -9,6 +9,7 @@ import org.junit.Before; import org.junit.Test; import com.foxinmy.weixin4j.exception.WeixinException; +import com.foxinmy.weixin4j.model.MediaDownloadResult; import com.foxinmy.weixin4j.model.MediaUploadResult; import com.foxinmy.weixin4j.qy.api.MediaApi; import com.foxinmy.weixin4j.type.MediaType; @@ -34,8 +35,8 @@ public class MediaTest extends TokenTest { @Test public void upload() throws IOException, WeixinException { File file = new File("/Users/jy/Downloads/weixin4j.png"); - MediaUploadResult mediaResult = mediaApi.uploadMedia(0, new FileInputStream( - file), file.getName()); + MediaUploadResult mediaResult = mediaApi.uploadMedia(0, + new FileInputStream(file), file.getName()); // 1gJ0vRLQp_o7L9hsVm6sviuGWc0qaPOd-KjkUZ6KQ7IrFVui8b2ZZd9F5szLCUkkD8gxk65lwW2SV72XO1RGZTQ Assert.assertNotNull(mediaResult.getMediaId()); System.out.println(mediaResult); @@ -54,4 +55,22 @@ public class MediaTest extends TokenTest { public void listAll() throws WeixinException { mediaApi.listAllMaterialMedia(1, MediaType.image); } + + @Test + public void uploadFile() throws IOException, WeixinException { + File file = new File("/Users/jy/Downloads/弹性运动1.html"); + MediaUploadResult mediaResult = mediaApi.uploadMedia(0, + new FileInputStream(file), "弹性运动1.html"); + Assert.assertNotNull(mediaResult.getMediaId()); + System.out.println(mediaResult); + } + + @Test + public void downloadFile() throws WeixinException { + MediaDownloadResult result = mediaApi + .downloadMedia( + 0, + "19pXNIq8cd69QLwfsLaoZFfS2K82WCHNGPREO--o1rEMlNIOf0N9IDDQdler08S7fNAFsG-5XYwxf1gzORxDnlQ"); + System.err.println(result); + } } \ No newline at end of file