关于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. Linux下自动化监控内存、存储空间!

    距离上一次更新文章已经过去一段时间了,小编在这段时间因为一些琐事,加上身体生病不能及时更新文章,今天身体逐渐恢复就急忙来更新文章,今天思梦给大家带来的就是如何自动化监控我们的服务器一些基本的配置来保证 ...

  2. AtCoder Beginner Contest 069【A,水,B,水,C,数学,D,暴力】

    A - K-City Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement In K-city, ...

  3. [hdu5225][BC#40]Tom and permutation

    好久没写题解了..GDKOI被数位DP教做人了一发,现在终于来填数位DP的大坑了>_<. 发现自己以前写的关于数位DP的东西...因为没结合图形+语文水平拙计现在已经完全看不懂了嗯. 看来 ...

  4. Let the Balloon Rise(水)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1004 Let the Balloon Rise Time Limit: 2000/1000 MS (J ...

  5. hbmy周赛1--B

    B - 改革春风吹满地 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit  ...

  6. SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解

    想要从二维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM中,相机通常是提前标定好的.张正友于1998年在论文:"A Flexible New Technique fro Cam ...

  7. vue实现侧边栏手风琴效果

    模板 代码如下 html <template> <div class="header"> <ul> <!-- 循环数据在点击调用chang ...

  8. JXLS 2.4.0系列教程(四)——拾遗 如何做页面小计

    注:阅读本文前,请先阅读第四篇文章. http://www.cnblogs.com/foxlee1024/p/7619845.html 前面写了第四篇教程,发现有些东西忘了讲了,这里补回来. 忘了讲两 ...

  9. 防止ajax重复提交

    在jquery中防止ajax重复提交

  10. JSP学习总结

    1. 为什么需要jsp?  Servlet对于逻辑处理是非常方便的,但是对于页面的展现是非常麻烦的.JSP的诞生是为了解决Servlet页面展现麻烦的问题的. 2. JSP的特点:     Jsp页面 ...