91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java怎么發送https請求

發布時間:2021-11-24 16:48:03 來源:億速云 閱讀:1630 作者:iii 欄目:大數據

本篇內容介紹了“java怎么發送https請求”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

后端發送http請求需要的代碼環境

java怎么發送https請求

需要兩個jar包,httpclient 和 httpcore。

PS:最好兩個jar包的版本要一致,并且要保證本地沒有同類名稱的jar包,否則jar包沖突可可以會報”java.lang.NoClassDefFoundError:org/apache/http/impl/client/HttpClients “這種class找不到的錯誤!本人就遇到這種錯誤,最后把相同的jar包全刪掉只保留一份(即便jar沒有build path進去也要刪掉)。

https請求忽略證書發送

https協議比http安全性更高少量,具體原理如下:

用戶端在用HTTPS方式與Web服務器通信時有以下幾個步驟

(1)用戶用https的URL訪問Web服務器,要求與Web服務器建立SSL連接。

(2)Web服務器收到用戶端請求后,會將網站的證書信息(證書中包含公鑰)傳送一份給用戶端。

(3)用戶端的瀏覽器與Web服務器開始協商SSL連接的安全等級,也就是信息加密的等級。

(4)用戶端的瀏覽器根據雙方同意的安全等級,建立會話密鑰,而后利使用網站的公鑰將會話密鑰加密,并傳送給網站。

(5)Web服務器利使用自己的私鑰解密出會話密鑰。

(6)Web服務器利使用會話密鑰加密與用戶端之間的通信。

因而需要安全證書,當然通過java代碼方式能實現忽略證書的方式進行請求。

假如不在代碼中添加忽略證書的特殊解決,一般會直接拋出如下異常報錯:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

即為提醒要發送證書才可以正常請求服務。

如下代碼功可以就是忽略證書:

//https 請求忽略證書

SSLContextBuilder builder = new SSLContextBuilder();

builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());

SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(builder.build(), NoopHostnameVerifier.INSTANCE);

Registry registry = RegistryBuilder.create()

.register("http", new PlainConnectionSocketFactory())

.register("https", sslConnectionSocketFactory)

.build();

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(registry);

cm.setMaxTotal(100);

CloseableHttpClient httpClient = HttpClients.custom()

.setSSLSocketFactory(sslConnectionSocketFactory)

.setConnectionManager(cm)

.build();

注意:上面的httpClient就是包裝好的忽略證書的http請求實例對象,到時候直接使用這個對象發請求。


完整代碼

try {

//https 請求忽略證書

SSLContextBuilder builder = new SSLContextBuilder();

builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());

SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(builder.build(), NoopHostnameVerifier.INSTANCE);

Registry registry = RegistryBuilder.create()

.register("http", new PlainConnectionSocketFactory())

.register("https", sslConnectionSocketFactory)

.build();

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(registry);

cm.setMaxTotal(100);

CloseableHttpClient httpClient = HttpClients.custom()

.setSSLSocketFactory(sslConnectionSocketFactory)

.setConnectionManager(cm)

.build();

//將使用戶信息同步到第三方系統中

String url="https://xx.xx.xx.xx:1001/bomp/sync/execute";

//發送post請求

HttpPost method = new HttpPost(url);

//準備json數據發送參數

JSONObject paramIn = new JSONObject();

paramIn.put("app_id", "B39900002");

paramIn.put("secret_key", "ea703f2a02ae48b5b269ab43607275fe");

//構造內層json對象

JSONArray account_list = new JSONArray();

JSONObject account_list_obj = new JSONObject();

account_list_obj.put("account", pojo.get("loginId"));

account_list_obj.put("eip_account", "");

account_list_obj.put("name", pojo.get("loginName"));

account_list_obj.put("phone", pojo.get("mobile"));

account_list_obj.put("password", "");

account_list_obj.put("status", 1);

account_list_obj.put("roles", "");

account_list.add(account_list_obj);

paramIn.put("account_list", account_list);

//處理中文亂碼問題

StringEntity entity = new StringEntity(paramIn.toString(),"utf-8");

entity.setContentEncoding("UTF-8");

entity.setContentType("application/json");

method.setEntity(entity);

//發送請求

HttpResponse result = httpClient.execute(method);

//請求結束,返回結果

String resData = EntityUtils.toString(result.getEntity());

System.out.println("RENWOXING result:"+resData);

//得到返回結果的j'son格式

JSONObject resJson = JSONObject.fromObject(resData);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (org.apache.http.ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}catch(Exception e){

e.printStackTrace();

}

“java怎么發送https請求”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白朗县| 华容县| 诸城市| 增城市| 贵南县| 秀山| 云阳县| 浦城县| 垣曲县| 岑巩县| 开封县| 承德市| 邵东县| 广河县| 泗洪县| 白水县| 交口县| 商水县| 博罗县| 仲巴县| 北辰区| 阜城县| 云霄县| 海阳市| 镇江市| 兰西县| 阿尔山市| 漠河县| 屯门区| 库尔勒市| 盈江县| 彭水| 鹤庆县| 连平县| 惠安县| 行唐县| 宜春市| 广德县| 巴中市| 谢通门县| 前郭尔|