zl程序教程

您现在的位置是:首页 >  后端

当前栏目

JAVA利用HttpClient进行HTTPS接口调用详解编程语言

JAVA接口HTTPS编程语言 详解 利用 进行 调用
2023-06-13 09:11:47 时间

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

 }

 

17500.html

cjava