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
0
投稿

猜你喜欢

  • unity里获取text中文字宽度并截断省略的操作

    2023-11-02 07:48:52
  • C#生成随机ArrayList的方法

    2023-04-13 04:14:12
  • 浅谈十个常见的Java异常出现原因

    2022-10-04 07:58:50
  • C#采用OpenXml给Word文档添加表格

    2023-03-10 14:07:13
  • Java 如何使用Feign发送HTTP请求

    2023-05-10 15:04:08
  • 深入理解Java注解类型(@Annotation)

    2022-11-14 17:28:42
  • Android事件分发机制全面解析

    2023-05-11 06:53:49
  • Java基本数据类型与类型转换实例分析

    2021-07-13 14:41:29
  • JAVA基本概念详解

    2022-06-09 11:54:53
  • C#操作EXCEL DataTable转换的实例代码

    2022-05-18 04:25:15
  • 浅谈Android硬件加速原理与实现简介

    2022-04-20 14:11:36
  • Java 实战范例之线上婚纱摄影预定系统的实现

    2021-08-08 14:19:42
  • c# 类成员初始化顺序的特殊情况

    2021-07-04 18:04:45
  • Java集合教程之Collection实例详解

    2022-12-01 23:45:13
  • 安卓系统中实现摇一摇画面振动效果的方法

    2023-12-05 02:53:53
  • Maven项目部署到服务器设置访问路径以及配置虚拟目录的方法

    2023-12-04 02:12:12
  • C#设计模式之Singleton模式

    2022-03-28 09:01:31
  • java 动态增加定时任务示例

    2023-07-29 06:56:00
  • Android应用开发中CardView的初步使用指南

    2022-12-30 02:04:47
  • java9开始——接口中可以定义private私有方法

    2023-03-27 06:53:15
  • asp之家 软件编程 m.aspxhome.com