HttpUtils

来源:互联网 发布:cassandra 查看数据库 编辑:程序博客网 时间:2024/06/06 03:23
package com.rmcloud.web.helper;import java.io.File;import java.io.IOException;import java.net.URL;import java.util.ArrayList;import java.util.Enumeration;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;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.conn.ssl.DefaultHostnameVerifier;import org.apache.http.conn.util.PublicSuffixMatcher;import org.apache.http.conn.util.PublicSuffixMatcherLoader;import org.apache.http.entity.ByteArrayEntity;import org.apache.http.entity.ContentType;import org.apache.http.entity.StringEntity;import org.apache.http.entity.mime.MultipartEntityBuilder;import org.apache.http.entity.mime.content.FileBody;import org.apache.http.entity.mime.content.StringBody;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 com.rmcloud.web.entity.MQMsgBean;import com.sun.jersey.core.util.Base64;public class HttpClientUtil {private RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(15000).setConnectTimeout(15000).setConnectionRequestTimeout(15000).build();private static HttpClientUtil instance = null;private HttpClientUtil() {}public static HttpClientUtil getInstance() {if (instance == null) {instance = new HttpClientUtil();}return instance;}/** * 发送 post请求 *  * @param httpUrl *            地址 */public String sendHttpPost(String httpUrl) {HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPostreturn sendHttpPost(httpPost);}/** * 发送 post请求 *  * @param httpUrl *            地址 * @param params */public String sendHttpPostKeyValue(String httpUrl, String params,String contentType) {HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPosthttpPost.setHeader("content-type", contentType);try {// 设置参数StringEntity stringEntity = new StringEntity(params, "UTF-8");stringEntity.setContentType("application/x-www-form-urlencoded");httpPost.setEntity(stringEntity);} catch (Exception e) {e.printStackTrace();}return sendHttpPost(httpPost);}public String sendHttpPost(String httpUrl, String params, String contentType) {HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPosthttpPost.setHeader("content-type", contentType);try {// 设置参数StringEntity stringEntity = new StringEntity(params, "UTF-8");httpPost.setEntity(stringEntity);} catch (Exception e) {e.printStackTrace();}return sendHttpPost(httpPost);}public String sendHttpPost(String httpUrl, byte[] postData,HttpServletRequest requestOrignail) {HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPostEnumeration<? extends Object> headerNames = requestOrignail.getHeaderNames();while (headerNames.hasMoreElements()) {String key = (String) headerNames.nextElement();String value = requestOrignail.getHeader(key);httpPost.setHeader(key, value);}try {// 设置参数ByteArrayEntity entity = new ByteArrayEntity(postData);httpPost.setEntity(entity);} catch (Exception e) {e.printStackTrace();}return sendHttpPost(httpPost);}//public String sendHttpPost(String httpUrl, byte[] postData) {//HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost//try {//// 设置参数//ByteArrayEntity entity = new ByteArrayEntity(postData);//httpPost.setEntity(entity);//} catch (Exception e) {//e.printStackTrace();//}//return sendHttpPost(httpPost);//}public String sendHttpPost(String httpUrl, byte[] postData) {HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPosthttpPost.setHeader("Content-Type", "application/json; charset=utf-8");try {// 设置参数ByteArrayEntity entity = new ByteArrayEntity(postData);entity.setContentEncoding("UTF-8");httpPost.setEntity(entity);} catch (Exception e) {e.printStackTrace();}return sendHttpPost(httpPost);}public String sendHttpPost2(String httpUrl, String postData) {HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPosthttpPost.setHeader("content-type", "application/json; charset=utf-8");try {// 设置参数StringEntity stringEntity = new StringEntity(postData, "UTF-8");httpPost.setEntity(stringEntity);} catch (Exception e) {e.printStackTrace();}return sendHttpPost(httpPost);}/** * 发送 post请求 *  * @param httpUrl *            地址 * @param maps *            参数 */public String sendHttpPost(String httpUrl, Map<String, String> maps) {HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost// 创建参数队列List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();for (String key : maps.keySet()) {nameValuePairs.add(new BasicNameValuePair(key, maps.get(key)));}try {httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));} catch (Exception e) {e.printStackTrace();}return sendHttpPost(httpPost);}public String sendHttpPost(String httpUrl,List<NameValuePair> listNameAndValue) {HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPosttry {httpPost.setEntity(new UrlEncodedFormEntity(listNameAndValue,"UTF-8"));} catch (Exception e) {e.printStackTrace();}return sendHttpPost(httpPost);}/** * 发送 post请求(带文件) *  * @param httpUrl *            地址 * @param maps *            参数 * @param fileLists *            附件 */public String sendHttpPost(String httpUrl, Map<String, String> maps,List<File> fileLists) {HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPostMultipartEntityBuilder meBuilder = MultipartEntityBuilder.create();for (String key : maps.keySet()) {meBuilder.addPart(key, new StringBody(maps.get(key),ContentType.TEXT_PLAIN));}for (File file : fileLists) {FileBody fileBody = new FileBody(file);meBuilder.addPart("files", fileBody);}HttpEntity reqEntity = meBuilder.build();httpPost.setEntity(reqEntity);return sendHttpPost(httpPost);}/** * 发送Post请求 *  * @param httpPost * @return */private String sendHttpPost(HttpPost httpPost) {CloseableHttpClient httpClient = null;CloseableHttpResponse response = null;HttpEntity entity = null;String responseContent = null;try {// 创建默认的httpClient实例.httpClient = HttpClients.createDefault();httpPost.setConfig(requestConfig);// 执行请求response = httpClient.execute(httpPost);entity = response.getEntity();responseContent = EntityUtils.toString(entity, "UTF-8");} catch (Exception e) {e.printStackTrace();} finally {try {// 关闭连接,释放资源if (response != null) {response.close();}if (httpClient != null) {httpClient.close();}} catch (IOException e) {e.printStackTrace();}}return responseContent;}/** * 发送 get请求 *  * @param httpUrl */public String sendHttpGet(String httpUrl) {HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求return sendHttpGet(httpGet);}/** * 发送 get请求Https *  * @param httpUrl */public String sendHttpsGet(String httpUrl) {HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求return sendHttpsGet(httpGet);}/** * 发送Get请求 *  * @param httpPost * @return */private String sendHttpGet(HttpGet httpGet) {CloseableHttpClient httpClient = null;CloseableHttpResponse response = null;HttpEntity entity = null;String responseContent = null;try {// 创建默认的httpClient实例.httpClient = HttpClients.createDefault();httpGet.setConfig(requestConfig);// 执行请求response = httpClient.execute(httpGet);entity = response.getEntity();responseContent = EntityUtils.toString(entity, "UTF-8");} catch (Exception e) {e.printStackTrace();} finally {try {// 关闭连接,释放资源if (response != null) {response.close();}if (httpClient != null) {httpClient.close();}} catch (IOException e) {e.printStackTrace();}}return responseContent;}/** * 发送Get请求Https 协议---暂不用 *  * @param httpPost * @return */private String sendHttpsGet(HttpGet httpGet) {CloseableHttpClient httpClient = null;CloseableHttpResponse response = null;HttpEntity entity = null;String responseContent = null;try {// 创建默认的httpClient实例.PublicSuffixMatcher publicSuffixMatcher = PublicSuffixMatcherLoader.load(new URL(httpGet.getURI().toString()));DefaultHostnameVerifier hostnameVerifier = new DefaultHostnameVerifier(publicSuffixMatcher);httpClient = HttpClients.custom().setSSLHostnameVerifier(hostnameVerifier).build();httpGet.setConfig(requestConfig);// 执行请求response = httpClient.execute(httpGet);entity = response.getEntity();responseContent = EntityUtils.toString(entity, "UTF-8");} catch (Exception e) {e.printStackTrace();} finally {try {// 关闭连接,释放资源if (response != null) {response.close();}if (httpClient != null) {httpClient.close();}} catch (IOException e) {e.printStackTrace();}}return responseContent;}// MQ中发送访问API请求public static void sendMQMsg(String msg) {try {MQMsgBean msgBean = null;String apiResult = "";msgBean = (MQMsgBean) CommonHelper.jsonToObject(msg, MQMsgBean.class);if (msgBean != null) {// GET请求if (msgBean.getMethod().equals("GET")) {apiResult = getInstance().sendHttpGet(msgBean.getUrl());} else if (msgBean.getMethod().equals("POST")) {// 表单提交if (msgBean.getContentType().indexOf("x-www-form-urlencoded") != -1) {List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();String[] requestArr = msgBean.getRequestString().split("&");for (String keyAndValue : requestArr) {String[] arr = keyAndValue.split("=");nameValuePairs.add(new BasicNameValuePair(arr[0],arr[1]));}apiResult = getInstance().sendHttpPost(msgBean.getUrl(),nameValuePairs);} else {int encodeType = msgBean.getRequestEncodeType();byte[] requestByteArray;if (encodeType == 1) {requestByteArray = Base64.encode(msgBean.getRequestString().getBytes("utf-8"));// base64编码} else {requestByteArray = msgBean.getRequestString().getBytes("utf-8");// 默认编码}// 流提交apiResult = getInstance().sendHttpPost(msgBean.getUrl(),requestByteArray);}}SysCache.putMqMsgMap(msgBean.getUuid(), apiResult);}} catch (Exception e) {e.printStackTrace();}}}

0 0