中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

耿马| 兴化市| 象山县| 雷州市| 登封市| 分宜县| 翼城县| 囊谦县| 昌都县| 长兴县| 永胜县| 平顺县| 黔江区| 临猗县| 韶关市| 凤庆县| 甘孜| 鹤岗市| 康定县| 黔西| 芮城县| 黑河市| 寻乌县| 武鸣县| 三门峡市| 察雅县| 揭东县| 香格里拉县| 普安县| 佛冈县| 漳浦县| 启东市| 长春市| 逊克县| 自贡市| 芜湖县| 石林| 安阳县| 磐安县| 浪卡子县| 长垣县|