怎么實現HTTPS POST發送FORM表單參數返回Json
今天小編給大家分享一下怎么實現HTTPS POST發送FORM表單參數返回Json的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
依賴
<!--httpClient?Start--> ????????<!--httpClient?文件上傳?Start--> ????????<!--?https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload?--> ????????<dependency> ????????????<groupId>commons-fileupload</groupId> ????????????<artifactId>commons-fileupload</artifactId> ????????????<version>1.4</version> ????????</dependency> ????????<!--?https://mvnrepository.com/artifact/commons-io/commons-io?--> ????????<dependency> ????????????<groupId>commons-io</groupId> ????????????<artifactId>commons-io</artifactId> ????????????<version>2.11.0</version> ????????</dependency> ????????<!--httpClient?文件上傳?End--> ????????<!--?https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore?--> ????????<dependency> ????????????<groupId>org.apache.httpcomponents</groupId> ????????????<artifactId>httpcore</artifactId> ????????????<version>4.4.14</version> ????????</dependency> ????????<!--?https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient?--> ????????<dependency> ????????????<groupId>commons-httpclient</groupId> ????????????<artifactId>commons-httpclient</artifactId> ????????????<version>3.1</version> ????????</dependency> ????????<!--?https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime?--> ????????<dependency> ????????????<groupId>org.apache.httpcomponents</groupId> ????????????<artifactId>httpmime</artifactId> ????????????<version>4.5.13</version> ????????</dependency> ????????<!--httpClient?End-->
工具類
package?com.sinosoft.fis.utils; import?org.apache.http.HttpEntity; import?org.apache.http.HttpStatus; import?org.apache.http.client.config.RequestConfig; import?org.apache.http.client.methods.CloseableHttpResponse; import?org.apache.http.client.methods.HttpPost; import?org.apache.http.conn.ssl.SSLConnectionSocketFactory; import?org.apache.http.conn.ssl.SSLContextBuilder; import?org.apache.http.conn.ssl.TrustStrategy; import?org.apache.http.conn.ssl.X509HostnameVerifier; import?org.apache.http.impl.client.CloseableHttpClient; import?org.apache.http.impl.client.HttpClients; import?org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import?org.apache.http.util.EntityUtils; import?javax.net.ssl.SSLContext; import?javax.net.ssl.SSLException; import?javax.net.ssl.SSLSession; import?javax.net.ssl.SSLSocket; import?java.io.IOException; import?java.security.GeneralSecurityException; import?java.security.cert.CertificateException; import?java.security.cert.X509Certificate; /** ?*?實現HTTPS協議POST請求FORM參數返回報文 ?* ?*?@author?gblfy ?*?@date?2022-09-26 ?*/ public?class?HttpFormClient?{ ????private?static?PoolingHttpClientConnectionManager?connMgr; ????private?static?RequestConfig?requestConfig; ????private?static?final?int?MAX_TIMEOUT?=?7000; ????static?{ ????????//?設置連接池 ????????connMgr?=?new?PoolingHttpClientConnectionManager(); ????????//?設置連接池大小 ????????connMgr.setMaxTotal(100); ????????connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal()); ????????RequestConfig.Builder?configBuilder?=?RequestConfig.custom(); ????????//?設置連接超時 ????????configBuilder.setConnectTimeout(MAX_TIMEOUT); ????????//?設置讀取超時 ????????configBuilder.setSocketTimeout(MAX_TIMEOUT); ????????//?設置從連接池獲取連接實例的超時 ????????configBuilder.setConnectionRequestTimeout(MAX_TIMEOUT); ????????//?在提交請求之前?測試連接是否可用 ????????configBuilder.setStaleConnectionCheckEnabled(true); ????????requestConfig?=?configBuilder.build(); ????} ????/** ?????*?發送?HTTPS?POST?請求 ?????* ?????*?@param?apiUrl??????API接口URL ?????*?@return ?????*/ ????public?static?String?sendPostHttpSSLJsonOrForm(String?apiUrl)?{ ????????CloseableHttpClient?httpClient?=?HttpClients.custom().setSSLSocketFactory(createSSLConnSocketFactory()).setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build(); ????????HttpPost?httpPost?=?new?HttpPost(apiUrl); ????????CloseableHttpResponse?response?=?null; ????????String?httpStr?=?null; ????????try?{ ????????????httpPost.setConfig(requestConfig); ????????????response?=?httpClient.execute(httpPost); ????????????int?statusCode?=?response.getStatusLine().getStatusCode(); ????????????if?(statusCode?!=?HttpStatus.SC_OK)?{ ????????????????return?null; ????????????} ????????????HttpEntity?entity?=?response.getEntity(); ????????????if?(entity?==?null)?{ ????????????????return?null; ????????????} ????????????httpStr?=?EntityUtils.toString(entity,?"utf-8"); ????????}?catch?(Exception?e)?{ ????????????e.printStackTrace(); ????????}?finally?{ ????????????if?(response?!=?null)?{ ????????????????try?{ ????????????????????EntityUtils.consume(response.getEntity()); ????????????????}?catch?(IOException?e)?{ ????????????????????e.printStackTrace(); ????????????????} ????????????} ????????} ????????return?httpStr; ????} ????/** ?????*?創建SSL安全連接 ?????* ?????*?@return ?????*/ ????private?static?SSLConnectionSocketFactory?createSSLConnSocketFactory()?{ ????????SSLConnectionSocketFactory?sslsf?=?null; ????????try?{ ????????????SSLContext?sslContext?=?new?SSLContextBuilder().loadTrustMaterial(null,?new?TrustStrategy()?{ ????????????????@Override ????????????????public?boolean?isTrusted(X509Certificate[]?chain,?String?authType)?throws?CertificateException?{ ????????????????????return?true; ????????????????} ????????????}).build(); ????????????sslsf?=?new?SSLConnectionSocketFactory(sslContext,?new?X509HostnameVerifier()?{ ????????????????@Override ????????????????public?boolean?verify(String?arg0,?SSLSession?arg1)?{ ????????????????????return?true; ????????????????} ????????????????@Override ????????????????public?void?verify(String?host,?SSLSocket?ssl)?throws?IOException?{ ????????????????} ????????????????@Override ????????????????public?void?verify(String?host,?X509Certificate?cert)?throws?SSLException?{ ????????????????} ????????????????@Override ????????????????public?void?verify(String?host,?String[]?cns,?String[]?subjectAlts)?throws?SSLException?{ ????????????????} ????????????}); ????????}?catch?(GeneralSecurityException?e)?{ ????????????e.printStackTrace(); ????????} ????????return?sslsf; ????} ????public?static?void?main(String[]?args)?{ ????????String?postSSL?=?HttpFormClient.sendPostHttpSSLJsonOrForm("https://gblfy/openapi/auth/credential?clientId=newchinalife&secret=f1hyv7av&userType=2"); ????????System.out.println("返回"?+?postSSL); ????} }
以上就是“怎么實現HTTPS POST發送FORM表單參數返回Json”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注蝸牛博客行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:niceseo99@gmail.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。版權聲明:如無特殊標注,文章均為本站原創,轉載時請以鏈接形式注明文章出處。
評論