JAVA利用HttpClient进行HTTPS接口调用的方法
本文介绍了JAVA利用HttpClient进行HTTPS接口调用的方法,分享给大家,具体如下:
1.为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程。
importjava.security.cert.CertificateException; importjava.security.cert.X509Certificate; importjavax.net.ssl.SSLContext; importjavax.net.ssl.TrustManager; importjavax.net.ssl.X509TrustManager; importorg.apache.http.conn.ClientConnectionManager; importorg.apache.http.conn.scheme.Scheme; importorg.apache.http.conn.scheme.SchemeRegistry; importorg.apache.http.conn.ssl.SSLSocketFactory; importorg.apache.http.impl.client.DefaultHttpClient; /** *用于进行Https请求的HttpClient *@ClassName:SSLClient *@Description:TODO *@authorDevin*@date2017年2月7日下午1:42:07 * */ publicclassSSLClientextendsDefaultHttpClient{ publicSSLClient()throwsException{ super(); SSLContextctx=SSLContext.getInstance("TLS"); X509TrustManagertm=newX509TrustManager(){ @Override publicvoidcheckClientTrusted(X509Certificate[]chain, StringauthType)throwsCertificateException{ } @Override publicvoidcheckServerTrusted(X509Certificate[]chain, StringauthType)throwsCertificateException{ } @Override publicX509Certificate[]getAcceptedIssuers(){ returnnull; } }; ctx.init(null,newTrustManager[]{tm},null); SSLSocketFactoryssf=newSSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManagerccm=this.getConnectionManager(); SchemeRegistrysr=ccm.getSchemeRegistry(); sr.register(newScheme("https",443,ssf)); } }
2.创建一个利用HttpClient发送post请求的工具类
importorg.apache.http.HttpEntity; importorg.apache.http.HttpResponse; importorg.apache.http.StatusLine; importorg.apache.http.client.HttpClient; importorg.apache.http.client.methods.HttpPost; importorg.apache.http.entity.StringEntity; importorg.apache.http.message.BasicHeader; importorg.apache.http.util.EntityUtils; /** *利用HttpClient进行post请求的工具类 *@ClassName:HttpClientUtil *@Description:TODO *@authorDevin*@date2017年2月7日下午1:43:38 * */ publicclassHttpClientUtil{ @SuppressWarnings("resource") publicstaticStringdoPost(Stringurl,Stringjsonstr,Stringcharset){ HttpClienthttpClient=null; HttpPosthttpPost=null; Stringresult=null; try{ httpClient=newSSLClient(); httpPost=newHttpPost(url); httpPost.addHeader("Content-Type","application/json"); StringEntityse=newStringEntity(jsonstr); se.setContentType("text/json"); se.setContentEncoding(newBasicHeader("Content-Type","application/json")); httpPost.setEntity(se); HttpResponseresponse=httpClient.execute(httpPost); if(response!=null){ HttpEntityresEntity=response.getEntity(); if(resEntity!=null){ result=EntityUtils.toString(resEntity,charset); } } }catch(Exceptionex){ ex.printStackTrace(); } returnresult; } }
3.测试代码
publicstaticvoidmain(String[]args){ Stringurl="https://192.168.1.101/xxx"; StringjsonStr="{xxx}"; StringhttpOrgCreateTestRtn=HttpClientUtil.doPost(url,jsonStr,"utf-8"); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。