HTTP/HTTPS GET&POST两种方式的实现方法
关于GET及POST方式的区别请参照前面文章:
http://www.cnblogs.com/hunterCecil/p/5698604.html
http://www.cnblogs.com/hunterCecil/p/5661459.html
本文具体说明HTTP/HTTPS下GET&POST两种方式的实现方法
公共实现类如下:
public class HttpCommonUtil { private HttpCommonUtil () {
} public static String post(String url, String body) {
if (url.startsWith("https"))
return httpsPost(url, body);
else
return httpPost(url, body);
} private static String httpPost(String url, String body) {
Client client = ClientBuilder.newClient();
WebTarget target = client.target(url);
Response response = target.request()
.buildPost(Entity.entity(body, MediaType.APPLICATION_JSON)).invoke();
String re = response.readEntity(String.class);
response.close();
LOG.info("http post返回数据: " + re);
return re;
} private static String httpsPost(String url, String body) {
ClientConfig clientConfig = new ClientConfig().connectorProvider(new HttpUrlConnectorProvider());
SSLContext sc = null;
try {
sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]{new ParkingTrustManager()}, new SecureRandom());
} catch (NoSuchAlgorithmException e) {
LOG.error(e);
} catch (KeyManagementException e) {
LOG.error(e);
}
HostnameVerifier verifier = new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
};
Client client = ClientBuilder.newBuilder().withConfig(clientConfig)
.sslContext(sc).hostnameVerifier(verifier).build(); WebTarget target = client.target(url);
Response response = target.request()
.buildPost(Entity.entity(body, MediaType.APPLICATION_JSON)).invoke();
String re = response.readEntity(String.class);
response.close();
LOG.info("https post返回数据: " + re);
return re;
} static class ParkingTrustManager implements TrustManager, X509TrustManager {
public X509Certificate[] getAcceptedIssuers() {
return null;
} public void checkServerTrusted(X509Certificate[] certs, String authType)
throws CertificateException {
return;
} public void checkClientTrusted(X509Certificate[] certs, String authType)
throws CertificateException {
return;
}
} public static String get(String url) {
if (url.startsWith("https"))
return httpsGet(url);
else
return httpGet(url);
} private static String httpsGet(String url) {
ClientConfig clientConfig = new ClientConfig().connectorProvider(new HttpUrlConnectorProvider());
SSLContext sc = null;
try {
sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]{new ParkingTrustManager()}, new SecureRandom());
} catch (NoSuchAlgorithmException e) {
LOG.error(e);
} catch (KeyManagementException e) {
LOG.error(e);
}
HostnameVerifier verifier = new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
}; Client client = ClientBuilder.newBuilder().withConfig(clientConfig)
.sslContext(sc).hostnameVerifier(verifier).build(); WebTarget target = client.target(url);
Response response = target.request().buildGet().invoke();
String re = response.readEntity(String.class);
response.close();
LOG.info("https post返回数据: " + re);
return re;
} private static String httpGet(String url) {
Client client = ClientBuilder.newClient();
WebTarget target = null;
target = client.target(url);
Response response = target.request().buildGet().invoke();
String re = response.readEntity(String.class);
response.close();
LOG.info("http post返回数据: " + re);
return re;
}
}
测试类:
HTTP/HTTPS GET&POST两种方式的实现方法的更多相关文章
- 第二节:SSL证书的申请、配置(IIS通用)及跳转Https请求的两种方式
一. 相关概念介绍 1. SSL证书服务 SSL证书服务由"服务商"联合多家国内外数字证书管理和颁发的权威机构.在xx云平台上直接提供的服务器数字证书.您可以在阿里云.腾讯云等平台 ...
- jquery的ajax和原始的ajax这两种方式的使用方法
jquery的ajax是对原始的ajax进行的封装,方便用户的使用.下面用代码分别举例各自的使用方式. jquery的ajax发送和接收xml数据格式. $.ajax({ type: "PU ...
- Nginx配置同一个域名同时支持http与https两种方式访问
Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen 80;listen 443 ssl;ssl on;server_name 域名;in ...
- Springboot以Tomcat为容器实现http重定向到https的两种方式
1 简介 本文将介绍在Springboot中如何通过代码实现Http到Https的重定向,本文仅讲解Tomcat作为容器的情况,其它容器将在以后一一道来. 建议阅读之前的相关文章: (1) Sprin ...
- nginx开启ssl并把http重定向到https的两种方式
1 简介 Nginx是一个非常强大和流行的高性能Web服务器.本文讲解Nginx如何整合https并将http重定向到https. https相关文章如下: (1)Springboot整合https原 ...
- CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking)
CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking) 我在(Modern OpenGL用Shader拾取 ...
- 两种方式实现java生成Excel
Web应用中难免会遇到需要将数据导出并生成excel文件的需求.同样,对于本博客中的总结,也是建立在为了完成这样的一个需求,才开始去了解其实现形式,并且顺利完成需求的开发,先将实现过程总结于此.本博文 ...
- 《连载 | 物联网框架ServerSuperIO教程》- 10.持续传输大块数据流的两种方式(如:文件)
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- VS Code - Debugger for Chrome调试JavaScript的两种方式
VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrom ...
随机推荐
- linux下的外网木马前期要的工具
这周看了demon哥的博客弄msf外网马,自己试了一下 首先去ngrok官网下载对应的系统版本,如果对应下载那个标签是绿色的(这里不支持windows) 下载好后在linux提取出来 让我们来看看他的 ...
- Vijos P1131 最小公倍数和最大公约数问题【暴力】
最小公倍数和最大公约数问题 描述 输入二个正整数x0,y0(2≤x0≤100000,2≤y0≤1000000),求出满足下列条件的P.Q的个数. 条件:1.P.Q是正整数 2.要求P.Q以xO为最大公 ...
- [ZOJ3494]BCD Code
AC自动机+数位DP. 大致题意: BCD码就是把一个数十进制下的每一位分别用4位的二进制表示. 给你一坨01串,问你在一个区间内,有多少个数的BCD码不包含任何一个字符串. 因为涉及到多个串的匹配问 ...
- Saving James Bond(dijk)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1245 Saving James Bond Time Limit: 6000/3000 MS (Java ...
- [国嵌攻略][060][LCD工作原理解析]
LCD硬件体系 1.LCD液晶屏 液晶属于一种有机化合物,分子形状为长棒状,在不同的电流作用下,分子会有规律旋转,这样对光线产生一定的控制形成一个像素,而很多像素右可以构成完整的图像. LCD是Liq ...
- Vs自定义设置
1.固定选项卡独立行显示设置 效果如下 2.语言设置 可以从官网寻找所需版本语言包 https://my.visualstudio.com/downloads 3.代码段设置 可以对现有的进行一些改造 ...
- Oracle_复杂查询综合
Oracle_复杂查询综合 -- 1.列出所有员工的年工资,按年薪从低到高排序. select,) income from emp order by income; -- 2.列出薪金比" ...
- sudo :apt-get:command not found
在centos下用yum install xxx yum和apt-get的区别 一般来说著名的linux系统基本上分两大类: 1.RedHat系列:Redhat.Centos.Fedora等 2. ...
- 数据结构与算法(c++)——反转链表
算法概述:要求实现将一条单向链表反转并考虑时间复杂度. 算法分析: 数组法(略): 将列表元素逐个保存进数组,之后再逆向重建列表 点评:实现逻辑最简单,需要额外的内存开销. 移动指针: 通过三个指针逐 ...
- HTML面试
------------------------------------------------------- 行列 td tr ol -------------------------------- ...