mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-29 01:18:36 +08:00 
			
		
		
		
	issue #29 http代理支持
This commit is contained in:
		| @ -8,10 +8,13 @@ import me.chanjar.weixin.common.util.http.RequestExecutor; | ||||
| import me.chanjar.weixin.common.util.http.Utf8ResponseHandler; | ||||
| import org.apache.commons.lang3.StringUtils; | ||||
| import org.apache.http.Header; | ||||
| import org.apache.http.HttpHost; | ||||
| import org.apache.http.client.ClientProtocolException; | ||||
| import org.apache.http.client.config.RequestConfig; | ||||
| import org.apache.http.client.methods.CloseableHttpResponse; | ||||
| import org.apache.http.client.methods.HttpGet; | ||||
| import org.apache.http.entity.ContentType; | ||||
| import org.apache.http.impl.client.CloseableHttpClient; | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| @ -27,7 +30,7 @@ import java.util.regex.Pattern; | ||||
| public class MediaDownloadRequestExecutor implements RequestExecutor<File, String> { | ||||
|  | ||||
|   @Override | ||||
|   public File execute(String uri, String queryParam) throws WxErrorException, ClientProtocolException, IOException { | ||||
|   public File execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String queryParam) throws WxErrorException, ClientProtocolException, IOException { | ||||
|     if (queryParam != null) { | ||||
|       if (uri.indexOf('?') == -1) { | ||||
|         uri += '?'; | ||||
| @ -36,6 +39,11 @@ public class MediaDownloadRequestExecutor implements RequestExecutor<File, Strin | ||||
|     } | ||||
|      | ||||
|     HttpGet httpGet = new HttpGet(uri); | ||||
|     if (httpProxy != null) { | ||||
|       RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
|       httpGet.setConfig(config); | ||||
|     } | ||||
|  | ||||
|     CloseableHttpResponse response = httpclient.execute(httpGet); | ||||
|  | ||||
|     Header[] contentTypeHeader = response.getHeaders("Content-Type"); | ||||
|  | ||||
| @ -5,7 +5,9 @@ import java.io.IOException; | ||||
|  | ||||
| import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; | ||||
| import org.apache.http.HttpEntity; | ||||
| import org.apache.http.HttpHost; | ||||
| import org.apache.http.client.ClientProtocolException; | ||||
| import org.apache.http.client.config.RequestConfig; | ||||
| import org.apache.http.client.methods.CloseableHttpResponse; | ||||
| import org.apache.http.client.methods.HttpPost; | ||||
| import org.apache.http.entity.ContentType; | ||||
| @ -13,6 +15,7 @@ import org.apache.http.entity.mime.MultipartEntityBuilder; | ||||
|  | ||||
| import me.chanjar.weixin.common.bean.result.WxError; | ||||
| import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| import org.apache.http.impl.client.CloseableHttpClient; | ||||
|  | ||||
| /** | ||||
|  * 上传媒体文件请求执行器,请求的参数是File, 返回的结果是String | ||||
| @ -22,8 +25,12 @@ import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| public class MediaUploadRequestExecutor implements RequestExecutor<WxMediaUploadResult, File> { | ||||
|  | ||||
|   @Override | ||||
|   public WxMediaUploadResult execute(String uri, File file) throws WxErrorException, ClientProtocolException, IOException { | ||||
|   public WxMediaUploadResult execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, File file) throws WxErrorException, ClientProtocolException, IOException { | ||||
|     HttpPost httpPost = new HttpPost(uri); | ||||
|     if (httpProxy != null) { | ||||
|       RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
|       httpPost.setConfig(config); | ||||
|     } | ||||
|     if (file != null) { | ||||
|       HttpEntity entity = MultipartEntityBuilder | ||||
|             .create() | ||||
|  | ||||
| @ -2,6 +2,7 @@ package me.chanjar.weixin.common.util.http; | ||||
|  | ||||
| import java.io.IOException; | ||||
|  | ||||
| import org.apache.http.HttpHost; | ||||
| import org.apache.http.client.ClientProtocolException; | ||||
| import org.apache.http.impl.client.CloseableHttpClient; | ||||
| import org.apache.http.impl.client.HttpClients; | ||||
| @ -17,8 +18,6 @@ import me.chanjar.weixin.common.exception.WxErrorException; | ||||
|  */ | ||||
| public interface RequestExecutor<T, E> { | ||||
|  | ||||
|   public static final CloseableHttpClient httpclient = HttpClients.createDefault(); | ||||
|   public T execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, E data) throws WxErrorException, ClientProtocolException, IOException; | ||||
|  | ||||
|   public T execute(String uri, E data) throws WxErrorException, ClientProtocolException, IOException; | ||||
|    | ||||
| } | ||||
|  | ||||
| @ -2,12 +2,15 @@ package me.chanjar.weixin.common.util.http; | ||||
|  | ||||
| import java.io.IOException; | ||||
|  | ||||
| import org.apache.http.HttpHost; | ||||
| import org.apache.http.client.ClientProtocolException; | ||||
| import org.apache.http.client.config.RequestConfig; | ||||
| import org.apache.http.client.methods.CloseableHttpResponse; | ||||
| import org.apache.http.client.methods.HttpGet; | ||||
|  | ||||
| import me.chanjar.weixin.common.bean.result.WxError; | ||||
| import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| import org.apache.http.impl.client.CloseableHttpClient; | ||||
|  | ||||
| /** | ||||
|  * 简单的GET请求执行器,请求的参数是String, 返回的结果也是String | ||||
| @ -17,7 +20,7 @@ import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| public class SimpleGetRequestExecutor implements RequestExecutor<String, String> { | ||||
|  | ||||
|   @Override | ||||
|   public String execute(String uri, String queryParam) throws WxErrorException, ClientProtocolException, IOException { | ||||
|   public String execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String queryParam) throws WxErrorException, ClientProtocolException, IOException { | ||||
|     if (queryParam != null) { | ||||
|       if (uri.indexOf('?') == -1) { | ||||
|         uri += '?'; | ||||
| @ -25,6 +28,11 @@ public class SimpleGetRequestExecutor implements RequestExecutor<String, String> | ||||
|       uri += uri.endsWith("?") ? queryParam : '&' + queryParam; | ||||
|     } | ||||
|     HttpGet httpGet = new HttpGet(uri); | ||||
|     if (httpProxy != null) { | ||||
|       RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
|       httpGet.setConfig(config); | ||||
|     } | ||||
|  | ||||
|     CloseableHttpResponse response = httpclient.execute(httpGet); | ||||
|     String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); | ||||
|     WxError error = WxError.fromJson(responseContent); | ||||
|  | ||||
| @ -5,10 +5,20 @@ import java.io.IOException; | ||||
| import me.chanjar.weixin.common.bean.result.WxError; | ||||
| import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| import org.apache.http.Consts; | ||||
| import org.apache.http.HttpHost; | ||||
| import org.apache.http.auth.AuthScope; | ||||
| import org.apache.http.auth.UsernamePasswordCredentials; | ||||
| import org.apache.http.client.ClientProtocolException; | ||||
| import org.apache.http.client.CredentialsProvider; | ||||
| import org.apache.http.client.config.RequestConfig; | ||||
| import org.apache.http.client.methods.CloseableHttpResponse; | ||||
| import org.apache.http.client.methods.HttpGet; | ||||
| import org.apache.http.client.methods.HttpPost; | ||||
| import org.apache.http.entity.StringEntity; | ||||
| import org.apache.http.impl.client.BasicCredentialsProvider; | ||||
| import org.apache.http.impl.client.CloseableHttpClient; | ||||
| import org.apache.http.impl.client.HttpClients; | ||||
| import org.apache.http.util.EntityUtils; | ||||
|  | ||||
| /** | ||||
|  * 简单的POST请求执行器,请求的参数是String, 返回的结果也是String | ||||
| @ -18,12 +28,18 @@ import org.apache.http.entity.StringEntity; | ||||
| public class SimplePostRequestExecutor implements RequestExecutor<String, String> { | ||||
|  | ||||
|   @Override | ||||
|   public String execute(String uri, String postEntity) throws WxErrorException, ClientProtocolException, IOException { | ||||
|   public String execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String postEntity) throws WxErrorException, ClientProtocolException, IOException { | ||||
|     HttpPost httpPost = new HttpPost(uri); | ||||
|     if (httpProxy != null) { | ||||
|       RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
|       httpPost.setConfig(config); | ||||
|     } | ||||
|  | ||||
|     if (postEntity != null) { | ||||
|       StringEntity entity = new StringEntity(postEntity, Consts.UTF_8); | ||||
|       httpPost.setEntity(entity); | ||||
|     } | ||||
|  | ||||
|     CloseableHttpResponse response = httpclient.execute(httpPost); | ||||
|     String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); | ||||
|     WxError error = WxError.fromJson(responseContent); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Daniel Qian
					Daniel Qian