博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpClientUtil
阅读量:5010 次
发布时间:2019-06-12

本文共 6973 字,大约阅读时间需要 23 分钟。

/************************************************************************日 期:作 者:版 本:描 述: 历 史:************************************************************************/package com.jetsen.util;import java.io.IOException;import java.io.InputStream;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.commons.io.IOUtils;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpDelete;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.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;/** * @author yl * */public class HttpClientUtil{    private static PoolingHttpClientConnectionManager connMgr;    private static RequestConfig requestConfig;    private static final int MAX_TIMEOUT = 7000;    static    {        // 设置连接池          connMgr = new PoolingHttpClientConnectionManager();        // 设置连接池大小          connMgr.setMaxTotal(100);        connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal());        RequestConfig.Builder configBuilder = RequestConfig.custom();        // 设置连接超时          configBuilder.setConnectTimeout(MAX_TIMEOUT);        // 设置读取超时          configBuilder.setSocketTimeout(MAX_TIMEOUT);        // 设置从连接池获取连接实例的超时          configBuilder.setConnectionRequestTimeout(MAX_TIMEOUT);        requestConfig = configBuilder.build();    }    /**      * 发送 GET 请求(HTTP),不带输入数据      * @param url      * @return      */    public static HttpRespEntity doGet(String url)    {        return doGet(url, new HashMap
()); } /** * 发送 GET 请求(HTTP),K-V形式 * @param url * @param params * @return */ public static HttpRespEntity doGet(String url, Map
params) { HttpRespEntity resp = null; String apiUrl = url; StringBuffer param = new StringBuffer(); int i = 0; for (String key : params.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append(params.get(key)); i++; } apiUrl += param; HttpClient httpclient = HttpClients.createDefault(); try { HttpGet httpPost = new HttpGet(apiUrl); HttpResponse response = httpclient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); resp = new HttpRespEntity(); resp.statusCode = statusCode; resp.headers = response.getAllHeaders(); System.out.println("执行状态码 : " + statusCode); HttpEntity entity = response.getEntity(); if (entity != null) { InputStream instream = entity.getContent(); resp.result = IOUtils.toString(instream, "UTF-8"); } } catch (IOException e) { e.printStackTrace(); } return resp; } /** * 发送 POST 请求(HTTP),不带输入数据 * @param apiUrl * @return */ public static HttpRespEntity doPost(String apiUrl) { return doPost(apiUrl, new HashMap
()); } /** * 发送 POST 请求(HTTP),K-V形式 * @param apiUrl API接口URL * @param params 参数map * @return */ public static HttpRespEntity doPost(String apiUrl, Map
params) { HttpRespEntity resp = null; CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(apiUrl); CloseableHttpResponse response = null; try { httpPost.setConfig(requestConfig); List
pairList = new ArrayList
(params.size()); for (Map.Entry
entry : params.entrySet()) { NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue().toString()); pairList.add(pair); } httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName("UTF-8"))); response = httpClient.execute(httpPost); resp = new HttpRespEntity(); resp.statusCode = response.getStatusLine().getStatusCode(); resp.headers = response.getAllHeaders(); System.out.println(response.toString()); HttpEntity entity = response.getEntity(); resp.result = EntityUtils.toString(entity, "UTF-8"); } catch (IOException e) { e.printStackTrace(); } finally { if (response != null) { try { EntityUtils.consume(response.getEntity()); } catch (IOException e) { e.printStackTrace(); } } } return resp; } /** * 发送 POST 请求(HTTP),JSON形式 * @param apiUrl * @param json json对象 * @return */ public static HttpRespEntity doPost(String apiUrl, Object json) { HttpRespEntity resp = null; CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(apiUrl); CloseableHttpResponse response = null; try { httpPost.setConfig(requestConfig); StringEntity stringEntity = new StringEntity(json.toString(), "UTF-8");//解决中文乱码问题 stringEntity.setContentEncoding("UTF-8"); stringEntity.setContentType("application/json"); httpPost.setEntity(stringEntity); response = httpClient.execute(httpPost); resp = new HttpRespEntity(); resp.statusCode = response.getStatusLine().getStatusCode(); resp.headers = response.getAllHeaders(); HttpEntity entity = response.getEntity(); System.out.println(response.getStatusLine().getStatusCode()); resp.result = EntityUtils.toString(entity, "UTF-8"); } catch (IOException e) { e.printStackTrace(); } finally { if (response != null) { try { EntityUtils.consume(response.getEntity()); } catch (IOException e) { e.printStackTrace(); } } } return resp; } /** * 发送 DELETE 请求(HTTP) * @param url * @param params * @return */ public static HttpRespEntity doDelete(String url) { HttpRespEntity resp = null; String apiUrl = url; HttpClient httpclient = HttpClients.createDefault(); try { HttpDelete httpDel = new HttpDelete(apiUrl); HttpResponse response = httpclient.execute(httpDel); resp = new HttpRespEntity(); resp.statusCode = response.getStatusLine().getStatusCode(); resp.headers = response.getAllHeaders(); HttpEntity entity = response.getEntity(); if (entity != null) { InputStream instream = entity.getContent(); resp.result = IOUtils.toString(instream, "UTF-8"); } } catch (IOException e) { e.printStackTrace(); } return resp; } /** * 测试方法 * @param args */ public static void main(String[] args) throws Exception { }}

  

转载于:https://www.cnblogs.com/xuxian/p/5976481.html

你可能感兴趣的文章
Git常用命令总结
查看>>
iOS获取设备IP地址
查看>>
JavaSE| String常用方法
查看>>
NRF51822配对绑定要点
查看>>
C语言博客作业—数据类型
查看>>
Python封装与隐藏
查看>>
[leetcode]Count and Say
查看>>
cookie、session和token的概念入门
查看>>
保护网站页面内容+版权
查看>>
Golang模拟客户端POST表单功能文件上传
查看>>
重启进程
查看>>
js 进度条效果
查看>>
RelativeLayout
查看>>
2014 10 07 ················男人感悟100(转自MOP)
查看>>
安卓开发之生成cache目录和files目录
查看>>
PHP 文件上传功能
查看>>
Spring源码解析(一)开篇
查看>>
开发流程
查看>>
【python】详解类class的方法:实例方法、类方法、静态方法(三)
查看>>
01_博客园的定制
查看>>