首页 > 开发 > Java > 正文

JAVA利用HttpClient进行HTTPS接口调用的方法

2024-07-13 10:11:10
字体:
来源:转载
供稿:网友

本文介绍了JAVA利用HttpClient进行HTTPS接口调用的方法,分享给大家,具体如下:

1.为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程。

java;">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");  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表