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 }
时间: 2024-10-08 00:11:59

JAVA API about HTTP 2的相关文章

笔记:MyBatis 使用 Java API配置

我们已经讨论了各种MyBatis配置元素,如envronments.typeAlias和typeHandlers,以及如何使用XML配置它们.即使你想使用基于JavaAPI的MyBatis配置,MyBatis的SqlSessionFactory接口除了使用基于XML的配置创建外也可以通过Java API 编程式地被创建.每个在XML中配置的元素,都可以编程式的创建.使用Java API创建SqlSessionFactory,代码如下: ? ? ????public?static?SqlSessi

MyEclipse生成java API文档

API文档是提供接口是必须的,如果用word文档,不仅书写起来很麻烦,而且对于使用者来说很不方便.可以使用myEclipse来生成API文档,与java提供的官方API文档一样.一下是详细步骤. /**  * 数据库操作通用程序包  */ package xju.dbhelper; import java.sql.*; /**  * 数据库操作通用接口  * @author xju  * @version 1.0  */ public abstract interface DBHelper {

spark2.x由浅入深深到底系列六之RDD java api详解三

学习任何spark知识点之前请先正确理解spark,可以参考:正确理解spark 本文详细介绍了spark key-value类型的rdd java api 一.key-value类型的RDD的创建方式 1.sparkContext.parallelizePairs JavaPairRDD<String, Integer> javaPairRDD =         sc.parallelizePairs(Arrays.asList(new Tuple2("test", 3

Elasticsearch5.0 Java Api(一) -- 插入索引

Elasticsearch5.X官方手册 Elasticsearch5.X官方手册中文版 Elasticsearch5.X Java Api官方手册 导入maven依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.0.0</version> </depend

Java API操作HDFS

HDFS是存储数据的分布式文件系统,对HDFS的操作,就是对文件系统的操作,除了用HDFS的shell命令对文件系统进行操作,我们也可以利用Java API对文件系统进行操作,比如文件的创建.删除.修改权限等等,还有文件夹的创建.删除.重命名等等. 使用Java API对文件系统进行操作主要涉及以下几个类: 1.Configuration类:该类的对象封装了客户端或者服务端的配置. 2.FileSystem类:该类的对象是一个文件系统对象,可以利用该对象的一些方法来对文件进行操作,FileSys

在Java API设计中,面向接口编程的思想,以及接口和工厂的关系

现在的java API的设计中,提倡面向接口的编程,即在API的设计中,参数的传递和返回建议使用接口,而不是具体的实现类,如一个方法的输入参数类型应该使用Map接口,而不是HashMap或Hashtable等具体的实现类.这样做的好处是,程序容易扩展.如果使用Map作为参数,用户可以使用任何实现Map接口的类作为参数,而不是仅仅限制使用HashMap或Hashtable作为参数,使程序的实现更加灵活. 接口(Java的Interface),只定义了一些抽象的方法(也可以定义一些常量,但不鼓励这么

HDFS中JAVA API的使用

转自:http://www.cnblogs.com/liuling/p/2013-6-17-01.html 相关源代码:http://www.cnblogs.com/ggjucheng/archive/2013/02/19/2917020.html HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的文件操作主要涉及一下几个类: Configurat

ElasticSearch Java api 详解_V1.0

原英文文档:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/index.html (各个版本的api) Search部分: 查询有两种方法:query Java API和filter Java API 首先看一个例子: import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.Se

Android学习八---OpenCV JAVA API

OpenCV java API的文档说明在OpenCV-2.4.10-android-sdk/sdk/java/javadoc/index.html的文件夹下. 想用java API的方式进行OpenCV4android 应用开发还是挺简单,首先就这些API先熟悉一下,然后对自己要开发的应用设计好流程,需要用到什么的数据结构进行存储,用到什么算法.然后对算法进行了解,输入参数是什么,输出参数是什么.有哪些fields和methods. 1.Packages:org.opencv.core Cor

Android 和Java API的一个坑:SimpleDateFormat

今天上班遇到这么一个意料之外的异常: 出问题的代码是这样的(已去除上下文信息): Log.i(LOG_TAG, new SimpleDateFormat("YYYY-MM-dd HH:mm:ss", Locale.CHINA) .format(System.currentTimeMillis())); 反复检查,感觉没有问题,于是新建一个Java Project,直接输出同样的代码: public class Main{ public static void main(String[]