This commit is contained in:
jinyu 2016-01-05 19:00:44 +08:00
parent 9cf1dc5567
commit 5c212907fa
8 changed files with 65 additions and 20 deletions

View File

@ -116,8 +116,9 @@ public class HttpComponent3 extends AbstractHttpClient {
.setConnectionTimeout(params.getConnectTimeout()); .setConnectionTimeout(params.getConnectTimeout());
httpClient.getHttpConnectionManager().getParams() httpClient.getHttpConnectionManager().getParams()
.setSendBufferSize(params.getChunkSize()); .setSendBufferSize(params.getChunkSize());
httpMethod.getParams().setUriCharset(Consts.UTF_8.name());
httpMethod.getParams().setSoTimeout(params.getSocketTimeout()); 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()); httpMethod.getParams().setContentCharset(Consts.UTF_8.name());
} }
if (useSSL) { if (useSSL) {

View File

@ -70,6 +70,10 @@ public class HttpComponent4_1 extends HttpComponent4 {
params.getConnectTimeout()); params.getConnectTimeout());
uriRequest.getParams().setParameter( uriRequest.getParams().setParameter(
CoreProtocolPNames.HTTP_CONTENT_CHARSET, Consts.UTF_8); 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( uriRequest.getParams().setParameter(
HttpHeaders.CONTENT_ENCODING, Consts.UTF_8); HttpHeaders.CONTENT_ENCODING, Consts.UTF_8);
uriRequest.getParams().setParameter(HttpHeaders.ACCEPT_CHARSET, uriRequest.getParams().setParameter(HttpHeaders.ACCEPT_CHARSET,

View File

@ -10,15 +10,18 @@ import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.config.RequestConfig.Builder; import org.apache.http.client.config.RequestConfig.Builder;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpRequestBase; 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.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.X509HostnameVerifier; import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import com.foxinmy.weixin4j.http.HttpClientException; import com.foxinmy.weixin4j.http.HttpClientException;
import com.foxinmy.weixin4j.http.HttpParams; import com.foxinmy.weixin4j.http.HttpParams;
import com.foxinmy.weixin4j.http.HttpRequest; import com.foxinmy.weixin4j.http.HttpRequest;
import com.foxinmy.weixin4j.http.HttpResponse; import com.foxinmy.weixin4j.http.HttpResponse;
import com.foxinmy.weixin4j.model.Consts;
/** /**
* Requires Apache HttpComponents 4.3 or higher * Requires Apache HttpComponents 4.3 or higher
@ -34,7 +37,11 @@ public class HttpComponent4_2 extends HttpComponent4 {
private CloseableHttpClient httpClient; private CloseableHttpClient httpClient;
public HttpComponent4_2() { public HttpComponent4_2() {
this.httpClient = HttpClients.createDefault(); this.httpClient = HttpClientBuilder
.create()
.setDefaultConnectionConfig(
ConnectionConfig.custom().setCharset(Consts.UTF_8)
.build()).build();
} }
@Override @Override
@ -74,8 +81,12 @@ public class HttpComponent4_2 extends HttpComponent4 {
if (hostnameVerifier == null) { if (hostnameVerifier == null) {
hostnameVerifier = SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER; hostnameVerifier = SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
} }
httpClient = HttpClients.custom() httpClient = HttpClients
.custom()
.setHostnameVerifier(hostnameVerifier) .setHostnameVerifier(hostnameVerifier)
.setDefaultConnectionConfig(
ConnectionConfig.custom()
.setCharset(Consts.UTF_8).build())
.setSslcontext(sslContext).build(); .setSslcontext(sslContext).build();
} }
addHeaders(request.getHeaders(), uriRequest); addHeaders(request.getHeaders(), uriRequest);

View File

@ -80,8 +80,8 @@ public class WeixinRequestExecutor {
public WeixinResponse post(String url, FormBodyPart... bodyParts) public WeixinResponse post(String url, FormBodyPart... bodyParts)
throws WeixinException { throws WeixinException {
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.STRICT, MultipartEntity entity = new MultipartEntity(
null, Consts.UTF_8); HttpMultipartMode.BROWSER_COMPATIBLE, null, Consts.UTF_8);
for (FormBodyPart bodyPart : bodyParts) { for (FormBodyPart bodyPart : bodyParts) {
entity.addPart(bodyPart); entity.addPart(bodyPart);
} }

View File

@ -12,27 +12,32 @@ import com.foxinmy.weixin4j.http.HttpParams;
import com.foxinmy.weixin4j.http.HttpRequest; import com.foxinmy.weixin4j.http.HttpRequest;
import com.foxinmy.weixin4j.http.HttpResponse; import com.foxinmy.weixin4j.http.HttpResponse;
import com.foxinmy.weixin4j.http.factory.HttpClientFactory; 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.HttpComponent4Factory;
import com.foxinmy.weixin4j.http.factory.Netty4HttpClientFactory;
import com.foxinmy.weixin4j.http.factory.SimpleHttpClientFactory;
import com.foxinmy.weixin4j.util.IOUtil; import com.foxinmy.weixin4j.util.IOUtil;
public class HttpClientTest { public class HttpClientTest {
static HttpRequest request = new HttpRequest(HttpMethod.GET, static HttpRequest request = new HttpRequest(HttpMethod.GET,
"https://www.baidu.com"); "http://www.iteye.com/");
static { static {
HttpParams params = new HttpParams(); HttpParams params = new HttpParams();
params.setProxy(new Proxy(Type.HTTP, new InetSocketAddress( params.setProxy(new Proxy(Type.HTTP, new InetSocketAddress(
"117.136.234.9", 80))); "117.136.234.9", 80)));
request.setParams(params); //request.setParams(params);
} }
public static void test1() throws HttpClientException { public static void test1() throws HttpClientException {
HttpClientFactory.setDefaultFactory(new SimpleHttpClientFactory());
HttpClient httpClient = HttpClientFactory.getInstance(); HttpClient httpClient = HttpClientFactory.getInstance();
HttpResponse response = httpClient.execute(request); HttpResponse response = httpClient.execute(request);
print(response); print(response);
} }
public static void test2() throws HttpClientException { public static void test2() throws HttpClientException {
HttpClientFactory.setDefaultFactory(new HttpComponent3Factory());
HttpClient httpClient = HttpClientFactory.getInstance(); HttpClient httpClient = HttpClientFactory.getInstance();
HttpResponse response = httpClient.execute(request); HttpResponse response = httpClient.execute(request);
print(response); print(response);
@ -45,25 +50,29 @@ public class HttpClientTest {
print(response); 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 { public static void print(HttpResponse response) throws HttpClientException {
System.err.println(response.getStatus());
try { try {
System.err.println(new String( System.err.println(new String(
IOUtil.toByteArray(response.getBody()))); IOUtil.toByteArray(response.getBody())));
} catch (IOException e) { } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
System.err.println(response.getHeaders());
System.err.println(response.getProtocol());
} }
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
test1(); test1();
System.out.println("---------------------"); System.out.println("---------------------");
// test2(); test2();
System.out.println("---------------------"); System.out.println("---------------------");
// test3(); test3();
// test4(); System.out.println("---------------------");
test4();
} }
} }

View File

@ -381,7 +381,7 @@ public class WeixinProxy {
/** /**
* 获取永久媒体素材的总数</br> .图片和图文消息素材包括单图文和多图文的总数上限为5000其他素材的总数上限为1000 * 获取永久媒体素材的总数</br> .图片和图文消息素材包括单图文和多图文的总数上限为5000其他素材的总数上限为1000
* *
* @return 总数对象 * @return 总数对象
* @throws WeixinException * @throws WeixinException
* @see com.foxinmy.weixin4j.mp.model.MediaCounter * @see com.foxinmy.weixin4j.mp.model.MediaCounter
* @see <a * @see <a
@ -855,7 +855,6 @@ public class WeixinProxy {
* @return 消息发送状态 * @return 消息发送状态
* @throws WeixinException * @throws WeixinException
* @see com.foxinmy.weixin4j.mp.api.MassApi * @see com.foxinmy.weixin4j.mp.api.MassApi
* @see {@link com.foxinmy.weixin4j.util.MessageUtil#getStatusDesc(String)}
* @see <a * @see <a
* href="http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html#.E6.9F.A5.E8.AF.A2.E7.BE.A4.E5.8F.91.E6.B6.88.E6.81.AF.E5.8F.91.E9.80.81.E7.8A.B6.E6.80.81.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91">查询群发状态</a> * href="http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html#.E6.9F.A5.E8.AF.A2.E7.BE.A4.E5.8F.91.E6.B6.88.E6.81.AF.E5.8F.91.E9.80.81.E7.8A.B6.E6.80.81.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91">查询群发状态</a>
*/ */

View File

@ -54,8 +54,10 @@ public class MediaTest extends TokenTest {
@Test @Test
public void download1() throws WeixinException, IOException { public void download1() throws WeixinException, IOException {
MediaDownloadResult content = mediaApi.downloadMedia( MediaDownloadResult content = mediaApi
"BmzcrM2jaJXZCjBqxLwyC03kh5pge3CbrBqXP4XbYBCeKr7xz-rHuwPf4vYLVdL1", false); .downloadMedia(
"BmzcrM2jaJXZCjBqxLwyC03kh5pge3CbrBqXP4XbYBCeKr7xz-rHuwPf4vYLVdL1",
false);
Assert.assertTrue(content != null); Assert.assertTrue(content != null);
System.err.println(content); System.err.println(content);
} }

View File

@ -9,6 +9,7 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.model.MediaDownloadResult;
import com.foxinmy.weixin4j.model.MediaUploadResult; import com.foxinmy.weixin4j.model.MediaUploadResult;
import com.foxinmy.weixin4j.qy.api.MediaApi; import com.foxinmy.weixin4j.qy.api.MediaApi;
import com.foxinmy.weixin4j.type.MediaType; import com.foxinmy.weixin4j.type.MediaType;
@ -34,8 +35,8 @@ public class MediaTest extends TokenTest {
@Test @Test
public void upload() throws IOException, WeixinException { public void upload() throws IOException, WeixinException {
File file = new File("/Users/jy/Downloads/weixin4j.png"); File file = new File("/Users/jy/Downloads/weixin4j.png");
MediaUploadResult mediaResult = mediaApi.uploadMedia(0, new FileInputStream( MediaUploadResult mediaResult = mediaApi.uploadMedia(0,
file), file.getName()); new FileInputStream(file), file.getName());
// 1gJ0vRLQp_o7L9hsVm6sviuGWc0qaPOd-KjkUZ6KQ7IrFVui8b2ZZd9F5szLCUkkD8gxk65lwW2SV72XO1RGZTQ // 1gJ0vRLQp_o7L9hsVm6sviuGWc0qaPOd-KjkUZ6KQ7IrFVui8b2ZZd9F5szLCUkkD8gxk65lwW2SV72XO1RGZTQ
Assert.assertNotNull(mediaResult.getMediaId()); Assert.assertNotNull(mediaResult.getMediaId());
System.out.println(mediaResult); System.out.println(mediaResult);
@ -54,4 +55,22 @@ public class MediaTest extends TokenTest {
public void listAll() throws WeixinException { public void listAll() throws WeixinException {
mediaApi.listAllMaterialMedia(1, MediaType.image); 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);
}
} }