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 ...
随机推荐
- Codeforces Round #345 (Div. 2)【A.模拟,B,暴力,C,STL,容斥原理】
A. Joysticks time limit per test:1 second memory limit per test:256 megabytes input:standard input o ...
- [bzoj2638] 黑白染色
比较蛋疼的是我们可以先染个底色,再在底色上染别的东西. 由ccz大爷的题解可得..将目标状态里相同颜色的联通块缩点后,枚举起点,生成树里的最大节点深度就是需要的次数了, 如果最大深度是白色的话记得-1 ...
- JAVA爬虫实践(实践三:爬虫框架webMagic和csdnBlog爬虫)
WebMagic WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,你可以快速开发出一个高效.易维护的爬虫. 采用HttpClient可以实现定向的爬虫,也可以自己编写算法逻辑来 ...
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...
- SVN报Previous operation has not finished; run 'cleanup'&
做着项目突然SVN报Previous operation has not finished; run 'cleanup' if it was interrupted,进度又要继续,烦.百度一下发现很多 ...
- PHP结合Ueditor并修改图片上传路径
投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2016-10-16 我要评论 使用ueditor编辑器,附件默认在ueditor/php/upload/, 但是大家的附件地址的默认路 ...
- Spring整合Struts的两种方式介绍
1 使用Spring托管Struts Action 该种方式就是将Struts Action也视为一种Bean交给Spring来进行托管,使用时Struts的配置文件中配置的Action的classs ...
- IOS开发之UIView总结1
太长了,请看 http://blog.csdn.net/xdrt81y/article/details/9128695 performSelector: performSelector:withObj ...
- Apache 403 错误解决方法-让别人可以访问你的服务器
参考网址:http://www.cnblogs.com/mrlaker/archive/2013/04/29/3050888.html http://www.jb51.net/article/6119 ...
- vue.js中的各种问题记录(包括环境问题和学习笔记)
一.this relative module was not found: 问题的意思是这个模块找不到了 解决方法: 1)查看你入口文件的路径是否写错: 2)查看360杀毒是否拦截了你的文件. 二.v ...