关于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两种方式的实现方法的更多相关文章

  1. 第二节:SSL证书的申请、配置(IIS通用)及跳转Https请求的两种方式

    一. 相关概念介绍 1. SSL证书服务 SSL证书服务由"服务商"联合多家国内外数字证书管理和颁发的权威机构.在xx云平台上直接提供的服务器数字证书.您可以在阿里云.腾讯云等平台 ...

  2. jquery的ajax和原始的ajax这两种方式的使用方法

    jquery的ajax是对原始的ajax进行的封装,方便用户的使用.下面用代码分别举例各自的使用方式. jquery的ajax发送和接收xml数据格式. $.ajax({ type: "PU ...

  3. Nginx配置同一个域名同时支持http与https两种方式访问

    Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen 80;listen 443 ssl;ssl on;server_name 域名;in ...

  4. Springboot以Tomcat为容器实现http重定向到https的两种方式

    1 简介 本文将介绍在Springboot中如何通过代码实现Http到Https的重定向,本文仅讲解Tomcat作为容器的情况,其它容器将在以后一一道来. 建议阅读之前的相关文章: (1) Sprin ...

  5. nginx开启ssl并把http重定向到https的两种方式

    1 简介 Nginx是一个非常强大和流行的高性能Web服务器.本文讲解Nginx如何整合https并将http重定向到https. https相关文章如下: (1)Springboot整合https原 ...

  6. CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking)

    CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking) 我在(Modern OpenGL用Shader拾取 ...

  7. 两种方式实现java生成Excel

    Web应用中难免会遇到需要将数据导出并生成excel文件的需求.同样,对于本博客中的总结,也是建立在为了完成这样的一个需求,才开始去了解其实现形式,并且顺利完成需求的开发,先将实现过程总结于此.本博文 ...

  8. 《连载 | 物联网框架ServerSuperIO教程》- 10.持续传输大块数据流的两种方式(如:文件)

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  9. VS Code - Debugger for Chrome调试JavaScript的两种方式

    VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrom ...

随机推荐

  1. SpringBoot入坑-持久化操作

    前面内容中我们已经了解到了SpringBoot关于参数传递的相关知识,本篇我们一起来学习一下SpringBoot关于数据库持久化操作的知识,这里我们使用JPA进行数据库的持久化操作. 首先由于我们需要 ...

  2. 手机termux上安装msfconsole

    大家可能因为手机没有root而不能通过deploy安装kali 我们使用termux来安装渗透工具 1.下载并安装Termux,更新软件源并升级软件包 apt update apt upgrade a ...

  3. [51nod1310]Chandrima and XOR

    有这样一个小到大排列的无穷序列S:1, 2, 4, 5, 8......,其中任何一个数转为2进制不包括2个连续的1.给出一个长度为N的正整数数组A,A1, A2......An记录的是下标(下标从1 ...

  4. 洛谷 P1019 单词接龙【经典DFS,温习搜索】

    P1019 单词接龙 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在 ...

  5. MLlib--PIC算法

    转载请标明出处http://www.cnblogs.com/haozhengfei/p/82c3ef86303321055eb10f7e100eb84b.html PIC算法   幂迭代聚类     ...

  6. ThinkPHP5+小程序商城 网盘视频

    ThinkPHP5+小程序商城   网盘视频  有需要联系我  QQ:1844912514

  7. Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件

    利用ssh传输文件   在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件 scp username@servername:/path/filename /var/www ...

  8. CSS学习笔记day1

    1.css的简介  css:层叠样式表 (层叠:一层一层的:样式表:很多的属性和属性值) 使页面显示效果更好 将页面内容和显示样式进行分离,提高了显示功能. 2.css和html的结合方式(4种) 在 ...

  9. myeclipse 奔溃解决办法

    myeclipse 突然奔溃 解决办法 JVM terminated.Exit code=1 意思是说java 虚拟机挂了,而不是myeclipse挂了. 进入myeclipse 目录 查看myecl ...

  10. 一分钟搭建Vue2.0+Webpack2.0多页面项目

    想要自己一步步搭建的比较麻烦,不是很推荐,最少也要使用vue-cli,在其基础上开始搭建,今天我的主题是一分钟搭建,那么常规方法肯定不能满足的, 而我用的方法也很简单,就是使用已经配置完成的demo模 ...