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 }

 

posted @ 2016-10-08 13:04  StrongHan  阅读(129)  评论(0编辑  收藏  举报