JAVA HTTP请求和HTTPS请求
HTTP与HTTPS区别:http://blog.csdn.net/lyhjava/article/details/51860215
URL发送 HTTP、HTTPS:http://blog.csdn.net/guozili1/article/details/53995121
HttpClient 发送 HTTP、HTTPS 请求的简单封装
http://blog.csdn.net/happylee6688/article/details/47148227
- <span style="font-family:Comic Sans MS;">import org.apache.commons.io.IOUtils;
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpResponse;
- import org.apache.http.HttpStatus;
- import org.apache.http.NameValuePair;
- import org.apache.http.client.HttpClient;
- 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.SSLConnectionSocketFactory;
- import org.apache.http.conn.ssl.SSLContextBuilder;
- import org.apache.http.conn.ssl.TrustStrategy;
- import org.apache.http.conn.ssl.X509HostnameVerifier;
- 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.HttpClients;
- import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
- import org.apache.http.message.BasicNameValuePair;
- import org.apache.http.util.EntityUtils;
- import javax.net.ssl.SSLContext;
- import javax.net.ssl.SSLException;
- import javax.net.ssl.SSLSession;
- import javax.net.ssl.SSLSocket;
- import java.io.IOException;
- import java.io.InputStream;
- import java.nio.charset.Charset;
- import java.security.GeneralSecurityException;
- import java.security.cert.CertificateException;
- import java.security.cert.X509Certificate;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * HTTP 请求工具类
- *
- * @author : liii
- * @version : 1.0.
- * @date : //
- * @see : TODO
- */
- public class HttpUtil {
- private static PoolingHttpClientConnectionManager connMgr;
- private static RequestConfig requestConfig;
- private static final int MAX_TIMEOUT = ;
- static {
- // 设置连接池
- connMgr = new PoolingHttpClientConnectionManager();
- // 设置连接池大小
- connMgr.setMaxTotal();
- connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal());
- RequestConfig.Builder configBuilder = RequestConfig.custom();
- // 设置连接超时
- configBuilder.setConnectTimeout(MAX_TIMEOUT);
- // 设置读取超时
- configBuilder.setSocketTimeout(MAX_TIMEOUT);
- // 设置从连接池获取连接实例的超时
- configBuilder.setConnectionRequestTimeout(MAX_TIMEOUT);
- // 在提交请求之前 测试连接是否可用
- configBuilder.setStaleConnectionCheckEnabled(true);
- requestConfig = configBuilder.build();
- }
- /**
- * 发送 GET 请求(HTTP),不带输入数据
- * @param url
- * @return
- */
- public static String doGet(String url) {
- return doGet(url, new HashMap<String, Object>());
- }
- /**
- * 发送 GET 请求(HTTP),K-V形式
- * @param url
- * @param params
- * @return
- */
- public static String doGet(String url, Map<String, Object> params) {
- String apiUrl = url;
- StringBuffer param = new StringBuffer();
- int i = ;
- for (String key : params.keySet()) {
- if (i == )
- param.append("?");
- else
- param.append("&");
- param.append(key).append("=").append(params.get(key));
- i++;
- }
- apiUrl += param;
- String result = null;
- HttpClient httpclient = new DefaultHttpClient();
- try {
- HttpGet httpPost = new HttpGet(apiUrl);
- HttpResponse response = httpclient.execute(httpPost);
- int statusCode = response.getStatusLine().getStatusCode();
- System.out.println("执行状态码 : " + statusCode);
- HttpEntity entity = response.getEntity();
- if (entity != null) {
- InputStream instream = entity.getContent();
- result = IOUtils.toString(instream, "UTF-8");
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return result;
- }
- /**
- * 发送 POST 请求(HTTP),不带输入数据
- * @param apiUrl
- * @return
- */
- public static String doPost(String apiUrl) {
- return doPost(apiUrl, new HashMap<String, Object>());
- }
- /**
- * 发送 POST 请求(HTTP),K-V形式
- * @param apiUrl API接口URL
- * @param params 参数map
- * @return
- */
- public static String doPost(String apiUrl, Map<String, Object> params) {
- CloseableHttpClient httpClient = HttpClients.createDefault();
- String httpStr = null;
- HttpPost httpPost = new HttpPost(apiUrl);
- CloseableHttpResponse response = null;
- try {
- httpPost.setConfig(requestConfig);
- List<NameValuePair> pairList = new ArrayList<>(params.size());
- for (Map.Entry<String, Object> entry : params.entrySet()) {
- NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry
- .getValue().toString());
- pairList.add(pair);
- }
- httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName("UTF-8")));
- response = httpClient.execute(httpPost);
- System.out.println(response.toString());
- HttpEntity entity = response.getEntity();
- httpStr = EntityUtils.toString(entity, "UTF-8");
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (response != null) {
- try {
- EntityUtils.consume(response.getEntity());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return httpStr;
- }
- /**
- * 发送 POST 请求(HTTP),JSON形式
- * @param apiUrl
- * @param json json对象
- * @return
- */
- public static String doPost(String apiUrl, Object json) {
- CloseableHttpClient httpClient = HttpClients.createDefault();
- String httpStr = null;
- HttpPost httpPost = new HttpPost(apiUrl);
- CloseableHttpResponse response = null;
- try {
- httpPost.setConfig(requestConfig);
- StringEntity stringEntity = new StringEntity(json.toString(),"UTF-8");//解决中文乱码问题
- stringEntity.setContentEncoding("UTF-8");
- stringEntity.setContentType("application/json");
- httpPost.setEntity(stringEntity);
- response = httpClient.execute(httpPost);
- HttpEntity entity = response.getEntity();
- System.out.println(response.getStatusLine().getStatusCode());
- httpStr = EntityUtils.toString(entity, "UTF-8");
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (response != null) {
- try {
- EntityUtils.consume(response.getEntity());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return httpStr;
- }
- /**
- * 发送 SSL POST 请求(HTTPS),K-V形式
- * @param apiUrl API接口URL
- * @param params 参数map
- * @return
- */
- public static String doPostSSL(String apiUrl, Map<String, Object> params) {
- CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(createSSLConnSocketFactory()).setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build();
- HttpPost httpPost = new HttpPost(apiUrl);
- CloseableHttpResponse response = null;
- String httpStr = null;
- try {
- httpPost.setConfig(requestConfig);
- List<NameValuePair> pairList = new ArrayList<NameValuePair>(params.size());
- for (Map.Entry<String, Object> entry : params.entrySet()) {
- NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry
- .getValue().toString());
- pairList.add(pair);
- }
- httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName("utf-8")));
- response = httpClient.execute(httpPost);
- int statusCode = response.getStatusLine().getStatusCode();
- if (statusCode != HttpStatus.SC_OK) {
- return null;
- }
- HttpEntity entity = response.getEntity();
- if (entity == null) {
- return null;
- }
- httpStr = EntityUtils.toString(entity, "utf-8");
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (response != null) {
- try {
- EntityUtils.consume(response.getEntity());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return httpStr;
- }
- /**
- * 发送 SSL POST 请求(HTTPS),JSON形式
- * @param apiUrl API接口URL
- * @param json JSON对象
- * @return
- */
- public static String doPostSSL(String apiUrl, Object json) {
- CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(createSSLConnSocketFactory()).setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build();
- HttpPost httpPost = new HttpPost(apiUrl);
- CloseableHttpResponse response = null;
- String httpStr = null;
- try {
- httpPost.setConfig(requestConfig);
- StringEntity stringEntity = new StringEntity(json.toString(),"UTF-8");//解决中文乱码问题
- stringEntity.setContentEncoding("UTF-8");
- stringEntity.setContentType("application/json");
- httpPost.setEntity(stringEntity);
- response = httpClient.execute(httpPost);
- int statusCode = response.getStatusLine().getStatusCode();
- if (statusCode != HttpStatus.SC_OK) {
- return null;
- }
- HttpEntity entity = response.getEntity();
- if (entity == null) {
- return null;
- }
- httpStr = EntityUtils.toString(entity, "utf-8");
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (response != null) {
- try {
- EntityUtils.consume(response.getEntity());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return httpStr;
- }
- /**
- * 创建SSL安全连接
- *
- * @return
- */
- private static SSLConnectionSocketFactory createSSLConnSocketFactory() {
- SSLConnectionSocketFactory sslsf = null;
- try {
- SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
- public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
- return true;
- }
- }).build();
- sslsf = new SSLConnectionSocketFactory(sslContext, new X509HostnameVerifier() {
- @Override
- public boolean verify(String arg0, SSLSession arg1) {
- return true;
- }
- @Override
- public void verify(String host, SSLSocket ssl) throws IOException {
- }
- @Override
- public void verify(String host, X509Certificate cert) throws SSLException {
- }
- @Override
- public void verify(String host, String[] cns, String[] subjectAlts) throws SSLException {
- }
- });
- } catch (GeneralSecurityException e) {
- e.printStackTrace();
- }
- return sslsf;
- }
- /**
- * 测试方法
- * @param args
- */
- public static void main(String[] args) throws Exception {
- }
- }</span>
显示
JAVA HTTP请求和HTTPS请求的更多相关文章
- python——请求服务器(http请求和https请求)
一.http请求 1.http请求方式:get和post get一般用于获取/查询资源信息,在浏览器中直接输入url+请求参数点击enter之后连接成功服务器就能获取到的内容,post请求一般用于更新 ...
- 发送http请求和https请求的工具类
package com.haiyisoft.cAssistant.utils; import java.io.IOException;import java.util.ArrayList; impor ...
- haproxy 中的http请求和https请求
use Mojolicious::Lite; use JSON qw/encode_json decode_json/; use Encode; no strict; use JSON; # /foo ...
- 使用SoapUI工具做get请求和post请求接口测试
祝大家节日快乐啦. 之前写过的一篇帖子已经介绍了SoapUI工具的基本使用,所以在此不再重复讲解关于建工程.建测试套件.添加用例等操作,可查看该篇文章详解:http://www.cnblogs.com ...
- SoapUI工具做get请求和post请求接口测试
转载自:https://www.cnblogs.com/hong-fithing/p/7617366.html 此篇主要介绍SoapUI工具做常用的两种请求接口测试,分别是get请求和post请求. ...
- 浅说Get请求和Post请求
Web 上最常用的两种 Http 请求就是 Get 请求和 Post 请求了.我们在做 java web 开发时,也总会在 servlet 中通过 doGet 和 doPost 方法来处理请求:更经常 ...
- HttpClient之Get请求和Post请求示例
HttpClient之Get请求和Post请求示例 博客分类: Java综合 HttpClient的支持在HTTP/1.1规范中定义的所有的HTTP方法:GET, HEAD, POST, PUT, ...
- GET 请求和 POST 请求的区别和使用
作为前端开发, HTTP 中的 POST 请求和 GET 请求是经常会用到的东西,有的人可能知道,但对其原理和如何使用并不特别清楚,那么今天来浅谈一下两者的区别与如何使用. GET请求和POST请求的 ...
- 03_Django-GET请求和POST请求-设计模式及模板层
03_Django-GET请求和POST请求-设计模式及模板层 视频:https://www.bilibili.com/video/BV1vK4y1o7jH 博客:https://blog.csdn. ...
随机推荐
- loj2395 [JOISC 2017 Day 2]火车旅行
传送门 分析 我们知道无论往左走还是往右走一定都是往不低于这个点的地方走 于是我们可以考虑用倍增来维护一个点向左和向右走$2^i$最远分别能走到哪里 我们可以先用单调栈求出直走一步的情况,之后再处理倍 ...
- ZROI2018提高day3t2
传送门 分析 我们设A[i]表示点i有几个矿,B[i]表示这之中有几个矿是第一次出现,所以点i的贡献即为 (2^B[i]-1)*(2^(A[i]-B[i])) 注意减一的原因是第一次出现的矿应至少有一 ...
- tab下拉菜单
这个想法早就有的 (写tab下拉菜单)就觉得自己对js不是很熟 所以一直没有写 花了不少时间 <!DOCTYPE html> <html> <head> < ...
- 优先队列详解priority_queue .RP
) 删除.在最小优先队列(min priorityq u e u e)中,查找操作用来搜索优先权最小的元素,删除操作用来删除该元素;对于最大优先队列(max priority queue),查找操作用 ...
- clions的使用
最近无聊玩了下CLion这个IDE,顺便学习了下CMAKE怎么使用.话说CLion的CMAKE的支持还不是特别的完好,和命令行模式还有有区别,有如下几个问题: 1:CMAKE的编译目录不能指定,而是I ...
- 数据结构_sfdg(小F打怪)
问题描述 小 F 很爱打怪, 今天因为系统 bug, 他提前得知了 n 只怪的出现顺序以及击倒每只怪得到的成就值 ai. 设第一只怪出现的时间为第 1 秒,这个游戏每过 1 秒钟出现一只新怪且没被击倒 ...
- GTXE_COMMON
http://forums.xilinx.com/xlnx/board/crawl_message?board.id=IMPBD&message.id=9657 If you are usin ...
- linux手动安装配置mysql5.6
1.准备工作 ①官网下载:https://dev.mysql.com/downloads/mysql/5.6.html#downloads 下载之后上传到服务器. ②创建linux组用户 groupa ...
- spark(2.1) - spark-shell 下文件系统的数据读写
spark-shell 本地文件系统数据读写 [ file:// ] 读取 :sc.textFile (" ****") 写入:saveAsTextFile ("**** ...
- KDevelop4调试pcl一直读取不到.pcd文件
如题所示,KD下,能编译,运行时一直使用reader.read读取不到pcd,但是使用cmake能正常运行. 后来,使用terminator删掉工程的build文件夹,直接在工程文件下进行编译,报错提 ...