软件编程
位置:首页>> 软件编程>> java编程>> JAVA利用HttpClient进行HTTPS接口调用的方法

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

作者:路常有  发布时间:2023-10-24 16:28:11 

标签:java,httpclient

本文介绍了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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com