JAVA利用HttpClient进行HTTPS接口调用的方法
作者:路常有 时间:2023-10-24 16:28:11
本文介绍了JAVA利用HttpClient进行HTTPS接口调用的方法,分享给大家,具体如下:
1.为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程。
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
/**
* 用于进行Https请求的HttpClient
* @ClassName: SSLClient
* @Description: TODO
* @author Devin <xxx>
* @date 2017年2月7日 下午1:42:07
*
*/
public class SSLClient extends DefaultHttpClient {
public SSLClient() throws Exception{
super();
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
ctx.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager ccm = this.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("https", 443, ssf));
}
}
2.创建一个利用HttpClient发送post请求的工具类
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.message.BasicHeader;
import org.apache.http.util.EntityUtils;
/**
* 利用HttpClient进行post请求的工具类
* @ClassName: HttpClientUtil
* @Description: TODO
* @author Devin <xxx>
* @date 2017年2月7日 下午1:43:38
*
*/
public class HttpClientUtil {
@SuppressWarnings("resource")
public static String doPost(String url,String jsonstr,String charset){
HttpClient httpClient = null;
HttpPost httpPost = null;
String result = null;
try{
httpClient = new SSLClient();
httpPost = new HttpPost(url);
httpPost.addHeader("Content-Type", "application/json");
StringEntity se = new StringEntity(jsonstr);
se.setContentType("text/json");
se.setContentEncoding(new BasicHeader("Content-Type", "application/json"));
httpPost.setEntity(se);
HttpResponse response = httpClient.execute(httpPost);
if(response != null){
HttpEntity resEntity = response.getEntity();
if(resEntity != null){
result = EntityUtils.toString(resEntity,charset);
}
}
}catch(Exception ex){
ex.printStackTrace();
}
return result;
}
}
3.测试代码
public static void main(String[] args){
String url = "https://192.168.1.101/xxx";
String jsonStr = "{xxx}";
String httpOrgCreateTestRtn = HttpClientUtil.doPost(url, jsonStr, "utf-8");
}
来源:http://www.cnblogs.com/luchangyou/p/6375166.html
标签:java,httpclient
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
unity里获取text中文字宽度并截断省略的操作
2023-11-02 07:48:52
![](https://img.aspxhome.com/file/2023/0/88410_0s.jpg)
C#生成随机ArrayList的方法
2023-04-13 04:14:12
浅谈十个常见的Java异常出现原因
2022-10-04 07:58:50
C#采用OpenXml给Word文档添加表格
2023-03-10 14:07:13
![](https://img.aspxhome.com/file/2023/8/108638_0s.jpg)
Java 如何使用Feign发送HTTP请求
2023-05-10 15:04:08
深入理解Java注解类型(@Annotation)
2022-11-14 17:28:42
![](https://img.aspxhome.com/file/2023/8/60788_0s.png)
Android事件分发机制全面解析
2023-05-11 06:53:49
Java基本数据类型与类型转换实例分析
2021-07-13 14:41:29
![](https://img.aspxhome.com/file/2023/8/71018_0s.png)
JAVA基本概念详解
2022-06-09 11:54:53
![](https://img.aspxhome.com/file/2023/6/70996_0s.jpg)
C#操作EXCEL DataTable转换的实例代码
2022-05-18 04:25:15
浅谈Android硬件加速原理与实现简介
2022-04-20 14:11:36
![](https://img.aspxhome.com/file/2023/6/117096_0s.png)
Java 实战范例之线上婚纱摄影预定系统的实现
2021-08-08 14:19:42
![](https://img.aspxhome.com/file/2023/4/61384_0s.png)
c# 类成员初始化顺序的特殊情况
2021-07-04 18:04:45
![](https://img.aspxhome.com/file/2023/5/113875_0s.png)
Java集合教程之Collection实例详解
2022-12-01 23:45:13
![](https://img.aspxhome.com/file/2023/4/104704_0s.jpg)
安卓系统中实现摇一摇画面振动效果的方法
2023-12-05 02:53:53
![](https://img.aspxhome.com/file/2023/1/77401_0s.png)
Maven项目部署到服务器设置访问路径以及配置虚拟目录的方法
2023-12-04 02:12:12
![](https://img.aspxhome.com/file/2023/1/97821_0s.jpg)
C#设计模式之Singleton模式
2022-03-28 09:01:31
![](https://img.aspxhome.com/file/2023/5/86995_0s.png)
java 动态增加定时任务示例
2023-07-29 06:56:00
Android应用开发中CardView的初步使用指南
2022-12-30 02:04:47
![](https://img.aspxhome.com/file/2023/1/138691_0s.jpg)
java9开始——接口中可以定义private私有方法
2023-03-27 06:53:15
![](https://img.aspxhome.com/file/2023/1/66981_0s.png)