当前位置 : 主页 > 编程语言 > c++ >

HttpUtils工具类

来源:互联网 收集:自由互联 发布时间:2021-06-30
HttpUtils工具类 package net.hs.itn.teng.common.util;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.net.UnknownHostException;import java.security.SecureRandom;import java.secu
HttpUtils工具类
package net.hs.itn.teng.common.util;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.net.UnknownHostException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
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.client.utils.URLEncodedUtils;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.LaxRedirectStrategy;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;

import com.alibaba.fastjson.JSON;

/**
 * HttpUtils工具类
 * 
 * @author 
 *
 */
public class HttpUtils {

	/**
	 * 请求方式:post
	 */
	public static String POST = "post";

	/**
	 * 编码格式:utf-8
	 */
	private static final String CHARSET_UTF_8 = "UTF-8";

	/**
	 * 报文头部json
	 */
	private static final String APPLICATION_JSON = "application/json";

	/**
	 * 请求超时时间
	 */
	private static final int CONNECT_TIMEOUT = 60 * 1000;

	/**
	 * 传输超时时间
	 */
	private static final int SO_TIMEOUT = 60 * 1000;

	/**
	 * 日志
	 */
	private static Logger loggger = Logger.getLogger(HttpUtils.class);

	/**
	 * 
	 * @param protocol
	 * @param url
	 * @param paraMap
	 * @return
	 * @throws Exception
	 */
	public static String doPost(String protocol, String url,
			Map
 
   paraMap) throws Exception {
		CloseableHttpClient httpClient = null;
		CloseableHttpResponse resp = null;
		String rtnValue = null;
		try {
			if (protocol.equals("http")) {
				httpClient = HttpClients.createDefault();
			} else {
				// 获取https安全客户端
				httpClient = HttpUtils.getHttpsClient();
			}

			HttpPost httpPost = new HttpPost(url);
			List
  
    list = new ArrayList
   
    (); if (null != paraMap && paraMap.size() > 0) { for (Entry
    
      entry : paraMap.entrySet()) { list.add(new BasicNameValuePair(entry.getKey(), entry .getValue().toString())); } } RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(SO_TIMEOUT) .setConnectTimeout(CONNECT_TIMEOUT).build();// 设置请求和传输超时时间 httpPost.setConfig(requestConfig); httpPost.setEntity(new UrlEncodedFormEntity(list, CHARSET_UTF_8)); resp = httpClient.execute(httpPost); rtnValue = EntityUtils.toString(resp.getEntity(), CHARSET_UTF_8); } catch (Exception e) { loggger.error(e.getMessage()); throw e; } finally { if (null != resp) { resp.close(); } if (null != httpClient) { httpClient.close(); } } return rtnValue; } /** * 获取https,单向验证 * * @return * @throws Exception */ public static CloseableHttpClient getHttpsClient() throws Exception { try { TrustManager[] trustManagers = new TrustManager[] { new X509TrustManager() { public void checkClientTrusted( X509Certificate[] paramArrayOfX509Certificate, String paramString) throws CertificateException { } public void checkServerTrusted( X509Certificate[] paramArrayOfX509Certificate, String paramString) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } } }; SSLContext sslContext = SSLContext .getInstance(SSLConnectionSocketFactory.TLS); sslContext.init(new KeyManager[0], trustManagers, new SecureRandom()); SSLContext.setDefault(sslContext); sslContext.init(null, trustManagers, null); SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory( sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); HttpClientBuilder clientBuilder = HttpClients.custom() .setSSLSocketFactory(connectionSocketFactory); clientBuilder.setRedirectStrategy(new LaxRedirectStrategy()); CloseableHttpClient httpClient = clientBuilder.build(); return httpClient; } catch (Exception e) { throw new Exception("http client 远程连接失败", e); } } /** * post请求 * * @param msgs * @param url * @return * @throws ClientProtocolException * @throws UnknownHostException * @throws IOException */ public static String post(Map
     
       msgs, String url) throws ClientProtocolException, UnknownHostException, IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); try { HttpPost request = new HttpPost(url); List
      
        valuePairs = new ArrayList
       
        (); if (null != msgs) { for (Entry
        
          entry : msgs.entrySet()) { if (entry.getValue() != null) { valuePairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString())); } } } request.setEntity(new UrlEncodedFormEntity(valuePairs, CHARSET_UTF_8)); CloseableHttpResponse resp = httpClient.execute(request); return EntityUtils.toString(resp.getEntity(), CHARSET_UTF_8); } finally { httpClient.close(); } } /** * get请求 * * @param msgs * @param url * @return * @throws ClientProtocolException * @throws UnknownHostException * @throws IOException */ public static String get(Map
         
           msgs, String url) throws ClientProtocolException, UnknownHostException, IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); try { List
          
            valuePairs = new ArrayList
           
            (); if (null != msgs) { for (Entry
            
              entry : msgs.entrySet()) { if (entry.getValue() != null) { valuePairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString())); } } } // EntityUtils.toString(new UrlEncodedFormEntity(valuePairs), // CHARSET); url = url + "?" + URLEncodedUtils.format(valuePairs, CHARSET_UTF_8); HttpGet request = new HttpGet(url); CloseableHttpResponse resp = httpClient.execute(request); return EntityUtils.toString(resp.getEntity(), CHARSET_UTF_8); } finally { httpClient.close(); } } public static 
             
               T post(Map
              
                msgs, String url, Class
               
                 clazz) throws ClientProtocolException, UnknownHostException, IOException { String json = HttpUtils.post(msgs, url); T t = JSON.parseObject(json, clazz); return t; } public static 
                
                  T get(Map
                 
                   msgs, String url, Class
                  
                    clazz) throws ClientProtocolException, UnknownHostException, IOException { String json = HttpUtils.get(msgs, url); T t = JSON.parseObject(json, clazz); return t; } public static String postWithJson(Map
                   
                     msgs, String url) throws ClientProtocolException, IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); try { String jsonParam = JSON.toJSONString(msgs); HttpPost post = new HttpPost(url); post.setHeader("Content-Type", APPLICATION_JSON); post.setEntity(new StringEntity(jsonParam, CHARSET_UTF_8)); CloseableHttpResponse response = httpClient.execute(post); return new String(EntityUtils.toString(response.getEntity()).getBytes("iso8859-1"),CHARSET_UTF_8); } finally { httpClient.close(); } } public static 
                    
                      T postWithJson(Map
                     
                       msgs, String url, Class
                      
                        clazz) throws ClientProtocolException, UnknownHostException, IOException { String json = HttpUtils.postWithJson(msgs, url); T t = JSON.parseObject(json, clazz); return t; } }
                      
                     
                    
                   
                  
                 
                
               
              
             
            
           
          
         
        
       
      
     
    
   
  
 
网友评论