博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA API about HTTP 3
阅读量:6309 次
发布时间:2019-06-22

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

1 package com.han.http;  2   3   4 import java.io.IOException;  5 import java.io.UnsupportedEncodingException;  6 import java.nio.charset.Charset;  7 import java.util.ArrayList;  8 import java.util.HashMap;  9 import java.util.List; 10 import java.util.Map; 11  12 import org.apache.http.HttpEntity; 13 import org.apache.http.HttpResponse; 14 import org.apache.http.NameValuePair; 15 import org.apache.http.client.ClientProtocolException; 16 import org.apache.http.client.ResponseHandler; 17 import org.apache.http.client.config.CookieSpecs; 18 import org.apache.http.client.config.RequestConfig; 19 import org.apache.http.client.entity.UrlEncodedFormEntity; 20 import org.apache.http.client.methods.CloseableHttpResponse; 21 import org.apache.http.client.methods.HttpGet; 22 import org.apache.http.client.methods.HttpPost; 23 import org.apache.http.client.protocol.HttpClientContext; 24 import org.apache.http.entity.StringEntity; 25 import org.apache.http.impl.client.CloseableHttpClient; 26 import org.apache.http.impl.client.HttpClientBuilder; 27 import org.apache.http.impl.client.HttpClients; 28 import org.apache.http.message.BasicHeader; 29 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; 30 import org.apache.http.message.BasicNameValuePair; 31 import org.apache.http.util.EntityUtils; 32 import org.slf4j.Logger; 33 import org.slf4j.LoggerFactory; 34  35  36 public class HttpClientHelp { 37  38     private final static Logger logger = LoggerFactory.getLogger(HttpClientHelp.class); 39  40     private final static String ENCODE = "utf-8"; 41  42     private final static Charset CHARSET = Charset.forName("utf-8"); 43     public static final int TIMEOUT = 20000; 44  45     private static PoolingHttpClientConnectionManager cm = null; 46     private static RequestConfig defaultRequestConfig = null; 47  48     static { 49         /** 50          * 连接池管理 51          * **/ 52         cm = new PoolingHttpClientConnectionManager(); // 将最大连接数 53         cm.setMaxTotal(50); 54         // 将每个路由基础的连接增加到20 55         cm.setDefaultMaxPerRoute(20); 56  57         /** request设置 **/ 58         // 连接超时 20s 59         defaultRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES).setRedirectsEnabled(false).setSocketTimeout(TIMEOUT) 60                 .setConnectTimeout(TIMEOUT).setConnectionRequestTimeout(TIMEOUT).build(); 61     } 62      63     public static CloseableHttpClient getClient() { 64         return HttpClientBuilder.create().setDefaultRequestConfig(defaultRequestConfig).setConnectionManager(cm).build(); 65     } 66      67      68     public static String httpGetByUrl(String url) throws ClientProtocolException, IOException { 69         String responseBody = ""; 70         CloseableHttpClient httpclient = HttpClients.createDefault(); 71         try { 72             HttpGet httpget = new HttpGet(url); 73             ResponseHandler
responseHandler = new ResponseHandler
() { 74 @Override 75 public String handleResponse(final HttpResponse response) throws ClientProtocolException, IOException { 76 int status = response.getStatusLine().getStatusCode(); 77 if (status >= 200 && status < 300) { 78 HttpEntity entity = response.getEntity(); 79 return entity != null ? EntityUtils.toString(entity) : null; 80 } else { 81 throw new ClientProtocolException("Unexpected response status: " + status); 82 } 83 } 84 }; 85 responseBody = httpclient.execute(httpget, responseHandler); 86 } finally { 87 httpclient.close(); 88 } 89 return responseBody; 90 } 91 92 public static String postBodyContent(String url, String bodyContent) throws ClientProtocolException, IOException { 93 String result = ""; 94 CloseableHttpClient httpclient = HttpClients.createDefault(); 95 CloseableHttpResponse response = null; 96 try { 97 HttpPost httppost = new HttpPost(url); 98 StringEntity reqEntity = new StringEntity(bodyContent, "UTF-8"); 99 httppost.setEntity(reqEntity);100 // 设置连接超时5秒,请求超时1秒,返回数据超时8秒101 RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(1000).setSocketTimeout(8000)102 .build();103 httppost.setConfig(requestConfig);104 response = httpclient.execute(httppost);105 HttpEntity responseEntity = response.getEntity();106 byte[] bytes = EntityUtils.toByteArray(responseEntity);107 result = new String(bytes, "UTF-8");108 } finally {109 if (null != response) {110 response.close();111 }112 httpclient.close();113 }114 return result;115 }116 117 118 119 /**120 * post paramMap121 * 122 * @param path123 * @param params124 * @param headers125 * @return126 */127 public static String post(String path, Map
params, Map
headers) {128 List
values = new ArrayList
();129 for (String s : params.keySet()) {130 values.add(new BasicNameValuePair(s, params.get(s)));131 }132 UrlEncodedFormEntity entity = null;133 try {134 entity = new UrlEncodedFormEntity(values, ENCODE);135 } catch (UnsupportedEncodingException e) {136 // TODO Auto-generated catch block137 logger.error(e.getMessage());138 }139 return post(path, entity, headers);140 }141 142 /**143 * post body144 * 145 * @param path146 * @param body147 * @param headers148 * @return149 */150 public static String post(String path, String body, Map
headers) {151 return post(path, new StringEntity(body, CHARSET), headers);152 }153 154 public static String post(String path, HttpEntity postEntity, Map
headers) {155 String responseContent = null;156 CloseableHttpClient client = getClient();157 HttpPost httpPost = null;158 try {159 httpPost = new HttpPost(path);160 if (headers != null && !headers.isEmpty()) {161 for (String s : headers.keySet()) {162 httpPost.addHeader(s, headers.get(s));163 }164 }165 httpPost.addHeader("Content-Type", "application/json");166 httpPost.setEntity(postEntity);167 CloseableHttpResponse response = client.execute(httpPost, HttpClientContext.create());168 HttpEntity entity = response.getEntity();169 responseContent = EntityUtils.toString(entity, ENCODE);170 } catch (Exception e) {171 logger.error(e.getMessage());172 e.printStackTrace();173 } finally {174 if (httpPost != null) {175 httpPost.releaseConnection();176 }177 }178 return responseContent;179 }180 181 public static String get(String path, Map
headers) {182 String responseContent = null;183 CloseableHttpClient client = getClient();184 HttpGet httpGet = new HttpGet(path);185 try {186 187 if (headers != null && !headers.isEmpty()) {188 for (String s : headers.keySet()) {189 httpGet.addHeader(s, headers.get(s));190 }191 }192 CloseableHttpResponse response = client.execute(httpGet, HttpClientContext.create());193 HttpEntity entity = response.getEntity();194 responseContent = EntityUtils.toString(entity, ENCODE);195 } catch (Exception e) {196 logger.error(e.getMessage());197 e.printStackTrace();198 } finally {199 httpGet.releaseConnection();200 }201 return responseContent;202 }203 204 205 @SuppressWarnings("deprecation")//设置了请求头206 public static String postByBodyStringWithHeader(String url, String bodyString) throws ClientProtocolException, IOException {207 String result = "";208 CloseableHttpClient httpclient = HttpClients.createDefault();209 CloseableHttpResponse response = null; 210 try {211 HttpPost httppost = new HttpPost(url);212 StringEntity reqEntity = new StringEntity(bodyString, "UTF-8");213 httppost.setEntity(reqEntity);214 215 Map
headers = new HashMap
();216 headers.put("Content-Type", "application/json;charset=UTF-8");217 if (headers != null && !headers.isEmpty()) {218 for (String s : headers.keySet()) {219 httppost.addHeader(s, headers.get(s));220 }221 }222 //设置连接超时5秒,请求超时1秒,返回数据超时8秒223 // RequestConfig requestConfig = RequestConfig.custom() 224 // .setConnectTimeout(5000).setConnectionRequestTimeout(5000) 225 // .setSocketTimeout(8000).build(); 226 // httppost.setConfig(requestConfig);227 response = httpclient.execute(httppost);228 HttpEntity responseEntity = response.getEntity();229 byte[] bytes = EntityUtils.toByteArray(responseEntity);230 result = new String(bytes,"UTF-8");231 } finally {232 if (null != response) {233 response.close();234 }235 httpclient.close();236 }237 return result;238 }239 240 @SuppressWarnings("deprecation")//没有设置请求头241 public static String postByBodyString(String url, String bodyString) throws ClientProtocolException, IOException {242 String result = "";243 CloseableHttpClient httpclient = HttpClients.createDefault();244 CloseableHttpResponse response = null; 245 try {246 HttpPost httppost = new HttpPost(url);247 StringEntity reqEntity = new StringEntity(bodyString, "UTF-8");248 httppost.setEntity(reqEntity);249 250 //设置连接超时5秒,请求超时1秒,返回数据超时8秒251 // RequestConfig requestConfig = RequestConfig.custom() 252 // .setConnectTimeout(5000).setConnectionRequestTimeout(5000) 253 // .setSocketTimeout(8000).build(); 254 // httppost.setConfig(requestConfig);255 response = httpclient.execute(httppost);256 HttpEntity responseEntity = response.getEntity();257 byte[] bytes = EntityUtils.toByteArray(responseEntity);258 result = new String(bytes,"UTF-8");259 } finally {260 if (null != response) {261 response.close();262 }263 httpclient.close();264 }265 return result;266 }267 268 269 }

 

转载于:https://www.cnblogs.com/stronghan/p/6170805.html

你可能感兴趣的文章
[转] ReactNative Animated动画详解
查看>>
DNS原理及其解析过程
查看>>
记录自写AFNetWorking封装类
查看>>
没想到cnblog也有月经贴,其实C#值不值钱不重要。
查看>>
【转】LUA内存分析
查看>>
springboot使用schedule定时任务
查看>>
[转] Entity Framework Query Samples for PostgreSQL
查看>>
XDUOJ 1115
查看>>
PHP学习(四)---PHP与数据库MySql
查看>>
模版方法模式--实现的capp流程创建与管理
查看>>
软件需求分析的重要性
查看>>
eclipse的scala环境搭建
查看>>
UVA465:Overflow
查看>>
HTML5-placeholder属性
查看>>
Android选择本地图片过大程序停止的经历
查看>>
poj 2187:Beauty Contest(旋转卡壳)
查看>>
《Flask Web开发》里的坑
查看>>
Python-库安装
查看>>
Git笔记
查看>>
普通人如何从平庸到优秀,在到卓越
查看>>