123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- package com.fuint.common.util;
- 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.ResponseHandler;
- 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.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.message.BasicNameValuePair;
- import org.apache.http.util.EntityUtils;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.util.*;
- /**
- * 基于 apache httpClient4.5的HTTP工具类
- *
- * Created by FSQ
- * CopyRight https://www.fuint.cn
- */
- public class HttpClientUtil {
- public static String doGet(String url) {
- return doGet(url, null);
- }
- public static String doGet(String url, Map<String, String> headers) {
- CloseableHttpClient httpClient = null;
- CloseableHttpResponse response = null;
- String result = "";
- try {
- // 通过址默认配置创建一个httpClient实例
- httpClient = HttpClients.createDefault();
- // 创建httpGet远程连接实例
- HttpGet httpGet = new HttpGet(url);
- if (headers != null && headers.size() > 0) {
- for(Map.Entry<String, String> entry : headers.entrySet()){
- httpGet.addHeader(entry.getKey(), entry.getValue());
- }
- }
- // 设置配置请求参数
- // 连接主机服务超时时间、请求超时时间、数据读取超时时间
- RequestConfig requestConfig = RequestConfig.custom()
- .setConnectTimeout(5000).setConnectionRequestTimeout(5000).setSocketTimeout(10000)
- .build();
- // 为httpGet实例设置配置
- httpGet.setConfig(requestConfig);
- // 执行get请求得到返回对象
- response = httpClient.execute(httpGet);
- // 通过返回对象获取返回数据
- HttpEntity entity = response.getEntity();
- // 通过EntityUtils中的toString方法将结果转换为字符串
- result = org.apache.http.util.EntityUtils.toString(entity);
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- // 关闭资源
- if (null != response) {
- try {
- response.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (null != httpClient) {
- try {
- httpClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return result;
- }
- public static String doPost(String url, Map<String, Object> paramMap) {
- return doPost(url, paramMap, null);
- }
- public static String doPost(String url, Map<String, Object> paramMap, Map<String, String> headers) {
- return doPost(url, paramMap, headers, "application/x-www-form-urlencoded", "UTF-8");
- }
- public static String doPost(String url, Map<String, Object> paramMap, Map<String, String> headers, String contentType, String charset) {
- CloseableHttpClient httpClient = null;
- CloseableHttpResponse httpResponse = null;
- String result = "";
- // 创建httpClient实例
- httpClient = HttpClients.createDefault();
- // 创建httpPost远程连接实例
- HttpPost httpPost = new HttpPost(url);
- // 配置请求参数实例
- // 连接主机服务超时时间、请求超时时间、数据读取超时时间
- RequestConfig requestConfig = RequestConfig.custom()
- .setConnectTimeout(5000).setConnectionRequestTimeout(5000).setSocketTimeout(10000)
- .build();
- // 为httpPost实例设置配置
- httpPost.setConfig(requestConfig);
- // 设置请求头
- httpPost.addHeader("Content-Type", contentType);
- if (headers != null && headers.size() > 0) {
- for(Map.Entry<String, String> entry : headers.entrySet()){
- httpPost.addHeader(entry.getKey(), entry.getValue());
- }
- }
- // 封装post请求参数
- if (null != paramMap && paramMap.size() > 0) {
- List<NameValuePair> nvps = new ArrayList<NameValuePair>();
- // 通过map集成entrySet方法获取entity
- Set<Map.Entry<String, Object>> entrySet = paramMap.entrySet();
- // 循环遍历,获取迭代器
- Iterator<Map.Entry<String, Object>> iterator = entrySet.iterator();
- while (iterator.hasNext()) {
- Map.Entry<String, Object> mapEntry = iterator.next();
- nvps.add(new BasicNameValuePair(mapEntry.getKey(), mapEntry.getValue().toString()));
- }
- // 为httpPost设置封装好的请求参数
- try {
- httpPost.setEntity(new UrlEncodedFormEntity(nvps, charset));
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
- try {
- // httpClient对象执行post请求,并返回响应参数对象
- httpResponse = httpClient.execute(httpPost);
- // 从响应对象中获取响应内容
- HttpEntity entity = httpResponse.getEntity();
- result = org.apache.http.util.EntityUtils.toString(entity);
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- // 关闭资源
- if (null != httpResponse) {
- try {
- httpResponse.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (null != httpClient) {
- try {
- httpClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return result;
- }
- public static String doPostJSON(String url, String json) {
- return doPostJSON(url, json, null);
- }
- public static String doPostJSON(String url, String json, Map<String, String> headers) {
- CloseableHttpClient httpClient = null;
- try {
- httpClient = HttpClients.createDefault();
- HttpPost httpPost = new HttpPost(url);
- RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(5000).setSocketTimeout(10000).build();
- // 为httpPost实例设置配置
- httpPost.setConfig(requestConfig);
- // 设置请求头
- httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
- if (headers != null && headers.size() > 0) {
- for (String key:headers.keySet()) {
- httpPost.addHeader(key, headers.get(key));
- }
- }
- // 解决中文乱码问题
- StringEntity stringEntity = new StringEntity(json, "UTF-8");
- stringEntity.setContentEncoding("UTF-8");
- httpPost.setEntity(stringEntity);
- ResponseHandler<String> responseHandler = new ResponseHandler<String>() {
- @Override
- public String handleResponse(final HttpResponse response)
- throws ClientProtocolException, IOException {
- int status = response.getStatusLine().getStatusCode();
- if (status >= 200 && status < 300) {
- HttpEntity entity = response.getEntity();
- return entity != null ? EntityUtils.toString(entity) : null;
- } else {
- throw new ClientProtocolException("Unexpected response status: " + status);
- }
- }
- };
- return httpClient.execute(httpPost, responseHandler);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (httpClient != null) {
- try {
- httpClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return null;
- }
- public static String doPostGetLocation(String url, Map<String, Object> paramMap) {
- CloseableHttpResponse httpResponse = null;
- CloseableHttpClient httpClient = HttpClients.createDefault();
- HttpPost httpPost = new HttpPost(url);
- RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(5000).setSocketTimeout(10000).build();
- // 为httpPost实例设置配置
- httpPost.setConfig(requestConfig);
- httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");
- // 封装post请求参数
- if (null != paramMap && paramMap.size() > 0) {
- List<NameValuePair> nvps = new ArrayList<NameValuePair>();
- Set<Map.Entry<String, Object>> entrySet = paramMap.entrySet();
- Iterator<Map.Entry<String, Object>> iterator = entrySet.iterator();
- while (iterator.hasNext()) {
- Map.Entry<String, Object> mapEntry = iterator.next();
- nvps.add(new BasicNameValuePair(mapEntry.getKey(), mapEntry.getValue().toString()));
- }
- try {
- httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
- try {
- // httpClient对象执行post请求,并返回响应参数对象
- httpResponse = httpClient.execute(httpPost);
- if (httpResponse.getStatusLine().getStatusCode() == 302 && httpResponse.getHeaders("Location").length > 0) {
- return httpResponse.getHeaders("Location")[0].getValue();
- }
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- // 关闭资源
- if (null != httpResponse) {
- try {
- httpResponse.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (null != httpClient) {
- try {
- httpClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return null;
- }
- }
|