HttpClient封装成常规请求方法 get post 支持key-value和json 格式传参
2019-01-19 17:32
633 查看
[code]/** * @Description Http|Https 请求工具类 * @Author blake * @Date 2018/12/12 下午4:33 * @Version 1.0 */ public class HttpUtils { 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); // 在提交请求之前 测试连接是否可用 connMgr.setValidateAfterInactivity(5000); // configBuilder.setStaleConnectionCheckEnabled(true); requestConfig = configBuilder.build(); } /** * 发送 GET 请求(HTTP),不带参数 * * @param url * @return */ public static String doGet(String url) { return doGet(url, new HashMap<>()); } /** * 发送 GET 请求(HTTP),传入参数为 Key-Value 形式 * * @param url * @param params * @return */ public static String doGet(String url, Map<String, Object> params) { 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; String result = null; HttpClient httpclient = HttpClientBuilder.create().build(); try { HttpGet httpPost = new HttpGet(apiUrl); HttpResponse response = httpclient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); System.out.println("执行状态码 : " + statusCode); HttpEntity entity = response.getEntity(); if (entity != null) { InputStream inStream = entity.getContent(); result = IOUtils.toString(inStream, "UTF-8"); } } catch (IOException e) { e.printStackTrace(); } return result; } /** * 发送 POST 请求(HTTP),不带参数 * * @param apiUrl * @return */ public static String doPost(String apiUrl) { return doPost(apiUrl, new HashMap<>()); } /** * 发送 POST 请求(HTTP),参数为 Key-Value 形式 * * @param apiUrl API接口URL * @param params 参数map * @return */ public static String doPost(String apiUrl, Map<String, Object> params) { CloseableHttpClient httpClient = HttpClients.createDefault(); String httpStr = null; HttpPost httpPost = new HttpPost(apiUrl); CloseableHttpResponse response = null; try { httpPost.setConfig(requestConfig); List<NameValuePair> pairList = new ArrayList<>(params.size()); for (Map.Entry<String, Object> 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); System.out.println(response.toString()); HttpEntity entity = response.getEntity(); httpStr = 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 httpStr; } /** * 发送 POST 请求(HTTP),参数为JSON形式 * * @param apiUrl * @param json json对象 * @return */ public static String doPost(String apiUrl, Object json) { CloseableHttpClient httpClient = HttpClients.createDefault(); String httpStr = null; 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); HttpEntity entity = response.getEntity(); System.out.println(response.getStatusLine().getStatusCode()); httpStr = 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 httpStr; }
相关文章推荐
- 通过HttpClient调用WebApi的Get、Post方法(返回类型限定为json格式)
- java实现HTTP的post请求 key-value格式与json格式的区别
- Apache 大三方法HTTP请求链接响应之HttpClient的GET和POST工具类封装
- Android HttpClient GET或者POST请求基本使用方法
- HttpUrlConnection与HttpClient的post、get的请求网络数据的方法
- Android HttpClient GET或者POST请求基本使用方法
- asynchttpclient的post方法发送json格式参数和表单格式参数
- HttpClient封装,get请求和post请求,文件下载和上传
- C# winform端 通过HttpWebRequest进行post和get请求,数据格式为json,后台java端接收,其中有关传输特殊字符(\t,\r,',\n,n)等处理
- Android 网络请求方式之HttpClient,GET,POST,PUT请求使用方法
- Android HttpClient GET或者POST请求基本使用方法
- Android HttpClient GET或者POST请求基本使用方法
- 接口自动化:HttpClient + TestNG + Java(四) - 封装和测试post方法请求
- httpclient post json 格式传参
- HttpClient发送get请求,post请求,携带cookie访问,json提交
- httpclient的post请求并处理json格式响应数据
- httpcomponents-client-4.3.5实现http的post请求和get请求方法
- HttpClient(get/post)请求封装成工具类
- Android 网络请求方式之HttpClient,GET,POST,PUT请求使用方法
- HTTP协议下Android web应用GET和POST请求方法的请求、响应、传参