使用HttpClient4.3.1模拟Http请求与无信任证书访问Https
来源:互联网 发布:淘宝引流宝怎么设置 编辑:程序博客网 时间:2024/06/05 22:19
package com.paic.pmit.core.util;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import org.apache.commons.httpclient.HttpStatus;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClientBuilder;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import org.apache.log4j.Logger;import com.paic.pafa.app.biz.service.BusinessServiceException;import com.paic.pmit.core.biz.service.impl.AbstractInvokeGroovy;/** * 模拟Http请求 * @author:EX-WANGYIDE001 * @date:2016-10-1上午10:29:18 *-------------------- *修改记录,含日期,作者,修改内容 */public class public_equipment_HttpClientUtils extends AbstractInvokeGroovy {Logger logger = Logger.getLogger(this.getClass());/** * 发送http请求 * @author:EX-WANGYIDE001 * @date:2016-10-1上午10:29:14 * @param url 请求URL * @param parameter请求参数 * @param requestCharset 编码格式 * @return * @throws BusinessServiceException */public String sendHttpRequest(String url, Map<String, String> parameter, String requestCharset) throws BusinessServiceException {logger.info("处理Http请求:"+url);long start = System.currentTimeMillis(); String result = null;CloseableHttpClient http = null;try {//创建HttpClient//HttpHost proxy = new HttpHost("10.36.232.126",8080);代理RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(60000).build();HttpClientBuilder builder = HttpClientBuilder.create();http = builder.build();//http = createSSLClientDefault();//post请求HttpPost httpPost = new HttpPost(url);httpPost.setConfig(config);//参数队列httpPost.setEntity(new UrlEncodedFormEntity(parameterConvert(parameter),requestCharset));//执行请求HttpResponse response = http.execute(httpPost);//响应处理int httpStatus = response.getStatusLine().getStatusCode();if (httpStatus == HttpStatus.SC_OK){HttpEntity entity = response.getEntity();if(entity != null){result = EntityUtils.toString(entity, requestCharset);logger.info("返回参数:"+result);}}else{throw new BusinessServiceException("服务方接口响应异常, httpStatus: " + httpStatus);}} catch (UnsupportedEncodingException e) {logger.error("http请求参数处理异常",e);throw new BusinessServiceException("http请求参数处理异常");} catch (ClientProtocolException e) {logger.error("http请求发生HTTP异常",e);throw new RuntimeException("http请求发生HTTP异常");} catch (IOException e) {logger.error("http请求发生IO异常",e);throw new RuntimeException("http请求发生IO异常");} finally{logger.info("耗时: " + (System.currentTimeMillis() - start) + " 毫秒");if(http!=null){try {http.close();} catch (IOException e) {logger.error("释放资源 close error:"+e);}}}return result;}/** * 转换参数 * @author:EX-WANGYIDE001 * @date:2016-10-1下午2:59:37 * @param parameter * @return */private List<NameValuePair> parameterConvert(Map<String,String> parameter){List<NameValuePair> results = new ArrayList<NameValuePair>(parameter.size());Set<Entry<String, String>> entrySet = parameter.entrySet();for (Iterator<Entry<String, String>> iter = entrySet.iterator(); iter.hasNext();) {Entry<String, String> entry = iter.next();results.add(new BasicNameValuePair(entry.getKey(),entry.getValue()));}return results;}/** * 处理Https请求证书 * @author:EX-WANGYIDE001 * @date:2016-10-1下午3:50:34 * @return *//*private CloseableHttpClient createSSLClientDefault(){try { SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { //信任所有证书 public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { return true; } }).build(); SSLConnectionSocketFactory sslFactory = new SSLConnectionSocketFactory(sslContext); return HttpClients.custom().setSSLSocketFactory(sslFactory).build(); } catch (Exception e) { logger.error("处理Https证书异常",e); } return HttpClients.createDefault();}*//** * 测试方法 * @author:EX-WANGYIDE001 * @date:2016-10-2上午9:58:51 * @param args * @throws Exception *//*public static void main(String args[]) throws Exception {public_equipment_HttpClientUtils http = new public_equipment_HttpClientUtils();Map<String,String> parameter = new HashMap<String,String>();parameter.put("credentials", "123456123");http.sendHttpRequest("测试地址", parameter, "UTF-8");}*/}
0 0
- 使用HttpClient4.3.1模拟Http请求与无信任证书访问Https
- HttpClient4.3实现https请求信任所有证书
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- 使用HttpClient4.4 模拟http请求
- httpclient 无信任证书直接使用https含项目demo
- httpclient无信任证书访问
- OkHttp使用Https访问服务器时信任所有证书
- HttpClient4之模拟http请求
- HttpClient4.x调用指定证书访问https
- 证书信任管理器(用于https请求)
- iPhone HTTPS 访问非信任站点(使用非信任证书,untrusted certificate)
- webView绕过信任证书访问https
- hdu 1005 Number Sequence
- 流水行船问题
- java类加载机制
- Android MVP
- 【50.26%】【hdu 5907】Find Q
- 使用HttpClient4.3.1模拟Http请求与无信任证书访问Https
- 二叉树的三种遍历
- 对TCP端口和连接数的一点思考
- linux下一次cp多个文件
- 160. Intersection of Two Linked Lists
- 一个牛x的mock框架--Powermock
- Pat甲级1002 in Python
- MIDI in HTML5
- 使用 Github Pages 发布你的项目文档