zoukankan      html  css  js  c++  java
  • JAVA API about HTTP 2

      1 import java.io.IOException;
      2 import java.nio.charset.Charset;
      3 import java.security.KeyManagementException;
      4 import java.security.KeyStoreException;
      5 import java.security.NoSuchAlgorithmException;
      6 import java.util.ArrayList;
      7 import java.util.HashMap;
      8 import java.util.List;
      9 import java.util.Map;
     10 
     11 import javax.net.ssl.SSLContext;
     12 
     13 import org.apache.commons.lang.StringUtils;
     14 import org.apache.http.HttpEntity;
     15 import org.apache.http.NameValuePair;
     16 import org.apache.http.client.config.RequestConfig;
     17 import org.apache.http.client.entity.UrlEncodedFormEntity;
     18 import org.apache.http.client.methods.CloseableHttpResponse;
     19 import org.apache.http.client.methods.HttpGet;
     20 import org.apache.http.client.methods.HttpPost;
     21 import org.apache.http.client.utils.URIBuilder;
     22 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
     23 import org.apache.http.conn.ssl.SSLContextBuilder;
     24 import org.apache.http.conn.ssl.TrustStrategy;
     25 import org.apache.http.entity.StringEntity;
     26 import org.apache.http.impl.client.CloseableHttpClient;
     27 import org.apache.http.impl.client.HttpClientBuilder;
     28 import org.apache.http.message.BasicNameValuePair;
     29 import org.apache.http.util.EntityUtils;
     30 
     31 import org.slf4j.Logger;
     32 import org.slf4j.LoggerFactory;
     33 
     34 import com.fasterxml.jackson.databind.ObjectMapper;
     35 
     36 
     37 public class HttpClient {
     38 
     39     private final static String ENCODE = "utf-8";
     40 
     41     private final static Charset CHARSET = Charset.forName("utf-8");
     42 
     43     private final static int SOCKET_TIME_OUT = 12000;
     44 
     45     private final static int SOCKET_CONNECT_OUT = 12000;
     46 
     47     private final static int CONNECTION_REQUEST_OUT = 12000;
     48 
     49     private static RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(SOCKET_TIME_OUT)
     50             .setConnectTimeout(SOCKET_CONNECT_OUT).setConnectionRequestTimeout(CONNECTION_REQUEST_OUT).build();
     51 
     52     private static ObjectMapper objectMapper = new ObjectMapper();
     53     
     54     private static final Logger LOG = LoggerFactory.getLogger(HttpClient.class);
     55 
     56     @SuppressWarnings("deprecation")
     57     public static SSLConnectionSocketFactory sslInit() {
     58         SSLContext sslContext = null;
     59         try {
     60             sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
     61                 // 信任所有
     62                 public boolean isTrusted(java.security.cert.X509Certificate[] chain, String authType) throws java.security.cert.CertificateException {
     63                     return true;
     64                 }
     65             }).build();
     66             
     67         } catch (KeyManagementException e) {
     68             e.printStackTrace();
     69         } catch (NoSuchAlgorithmException e) {
     70             e.printStackTrace();
     71         } catch (KeyStoreException e) {
     72             e.printStackTrace();
     73         }
     74         return new SSLConnectionSocketFactory(sslContext);
     75     }
     76 
     77     
     78     
     79     
     80     /**
     81      * @Description     post请求函数
     82      * @param scheme    http/https
     83      * @param host      请求域名
     84      * @param path      请求路径
     85      * @param params    URL请求参数
     86      * @param jsonBody  HTTP请求BODY
     87      * @param headers   HTTP请求头部
     88      * @return
     89      */
     90     public static HashMap post(String scheme, String host, String path, Map<String, String> params, String jsonBody,  Map<String, String> headers) {
     91         HashMap resultMap = new HashMap(); 
     92         CloseableHttpClient closeableHttpClient = null;
     93         try {
     94             SSLConnectionSocketFactory sslsf = sslInit();
     95             closeableHttpClient = HttpClientBuilder.create().setDefaultRequestConfig(defaultRequestConfig).setSSLSocketFactory(sslsf).build();
     96             
     97             //添加URL参数
     98             List<NameValuePair> values = new ArrayList<NameValuePair>();
     99             if (params != null && !params.isEmpty()) {
    100                 for (String s : params.keySet()) {
    101                     values.add(new BasicNameValuePair(s, params.get(s)));
    102                 }
    103             }
    104             //创建URI
    105             java.net.URI uri = new URIBuilder()
    106             .setScheme(scheme)
    107             .setHost(host)
    108             .setPath(path)
    109             .setParameters(values)
    110             .build();
    111             
    112             HttpPost httpPost = new HttpPost(uri);
    113             //添加头部
    114             if (headers != null && !headers.isEmpty()) {
    115                 for (String s : headers.keySet()) {
    116                     httpPost.addHeader(s, headers.get(s));
    117                 }
    118             }
    119             //添加URL参数
    120             /*if (params != null && !params.isEmpty()) {
    121                 List<NameValuePair> values = new ArrayList<NameValuePair>();
    122                 for (String s : params.keySet()) {
    123                     values.add(new BasicNameValuePair(s, params.get(s)));
    124                 }
    125                 httpPost.setEntity(new UrlEncodedFormEntity(values, ENCODE));
    126             }*/
    127             
    128             //添加请求BODY
    129             if (jsonBody != null) {
    130                 httpPost.setEntity(new StringEntity(jsonBody, Charset.forName("utf-8")));
    131             }
    132             
    133             LOG.info("HTTP Request URI:{}",httpPost.getURI().toString());
    134             LOG.info("HTTP Request Body: {}",jsonBody);
    135             
    136             //发出请求
    137             CloseableHttpResponse response = closeableHttpClient.execute(httpPost);
    138             HttpEntity entity = response.getEntity();
    139             String content = EntityUtils.toString(entity, ENCODE);
    140             LOG.info("HTTP Response:{}",content);
    141             
    142             if(StringUtils.isNotBlank(content)){
    143             resultMap = objectMapper.readValue(content, HashMap.class);    
    144             }
    145         } catch (Exception e) {
    146             LOG.info("Error msg:[{}]",e.getMessage());
    147             e.printStackTrace();
    148         } finally {
    149             try {
    150                 if (closeableHttpClient != null) {
    151                     closeableHttpClient.close();
    152                 }
    153             } catch (IOException e) {
    154                 e.printStackTrace();
    155             }
    156         }
    157         return resultMap;
    158     }
    159 
    160     
    161     
    162     
    163     /**
    164      * @Description   http get请求函数
    165      * @param scheme  http/https
    166      * @param host    域名
    167      * @param path    资源路径
    168      * @param params  请求参数
    169      * @param headers 请求头部
    170      * @return
    171      */
    172     public static HashMap get(String scheme, String host, String path, Map<String, String> params, Map<String, String> headers) {
    173         HashMap resultMap = new HashMap();
    174         CloseableHttpClient closeableHttpClient = null;
    175         try {
    176             SSLConnectionSocketFactory sslsf = sslInit();
    177             closeableHttpClient = HttpClientBuilder.create().setDefaultRequestConfig(defaultRequestConfig).setSSLSocketFactory(sslsf).build();
    178             
    179             //添加URL参数
    180             List<NameValuePair> values = new ArrayList<NameValuePair>();
    181             if (params != null && !params.isEmpty()) {
    182                 for (String s : params.keySet()) {
    183                     values.add(new BasicNameValuePair(s, params.get(s)));
    184                 }
    185             }
    186             
    187             //创建URI
    188             java.net.URI uri = new URIBuilder()
    189             .setScheme(scheme)
    190             .setHost(host)
    191             .setPath(path)
    192             .setParameters(values)
    193             .build();
    194             
    195             LOG.info("URI is:{}",uri.toString());
    196             //创建GET请求对象
    197             HttpGet httpGet = new HttpGet(uri);
    198             
    199             //添加头部
    200             if (headers != null && !headers.isEmpty()) {
    201                 for (String s : headers.keySet()) {
    202                     httpGet.addHeader(s, headers.get(s));
    203                 }
    204             }
    205             
    206             //发出请求
    207             LOG.info("HTTP Request:{}",httpGet.getURI().toString());
    208             CloseableHttpResponse response = closeableHttpClient.execute(httpGet);
    209             HttpEntity entity = response.getEntity();
    210             String content = EntityUtils.toString(entity, ENCODE);
    211              LOG.info("HTTP Response:{}",content);
    212             
    213             if(StringUtils.isNotBlank(content)){
    214             resultMap = objectMapper.readValue(content, HashMap.class);    
    215             }
    216         } catch (Exception e) {
    217             LOG.info("Error msg:[{}]",e.getMessage());
    218             e.printStackTrace();
    219         } finally {
    220             try {
    221                 if (closeableHttpClient != null) {
    222                     closeableHttpClient.close();
    223                 }
    224             } catch (IOException e) {
    225             e.printStackTrace();    
    226             }
    227         }
    228         return resultMap;
    229     }
    230 
    231 }
  • 相关阅读:
    一种针对SOA的消息类型架构
    许可方式 到底"非商业用途"意味着什么?
    Windows 7的CMD中 Telnet 无法执行的解决办法
    ASP.NET MVC 2.0 中文正式版发布
    什么是REST?
    架构、框架的区别
    Firefox 火狐下自动刷新的插件 ReloadEvery
    ASP.NET与JQUERY的AJAX文件上传 视频课件+源码Demo
    给吸烟的园友们:一个被烟草行业隐瞒了十年的秘密,烟真不是人吸的
    Echo Server,AsyncSocket,SocketAsyncEvent,SocketAsyncEventArgs,AsyncQueue
  • 原文地址:https://www.cnblogs.com/stronghan/p/5938154.html
Copyright © 2011-2022 走看看