package com.tyy.utils; import lombok.extern.apachecommons.CommonsLog; import com.alibaba.fastjson.JSON; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.net.URL; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.HashMap; import java.util.Map; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; /** * HTTPS对接PBX请求工具类 * @author lt */ @CommonsLog public class HttpsPBXUtil { /** * post请求 * @param serverUrl 请求地址 * @param data 请求JSON数据 * @param timeout 超时时间 * @return * @throws Exception */ public static String post(String serverUrl, String data, int timeout) throws Exception { StringBuilder responseBuilder = null; BufferedReader reader = null; OutputStreamWriter wr = null; try { SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier(new HttpsPBXUtil().new TrustAnyHostnameVerifier()); URL url = new URL(serverUrl); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.setDoOutput(true); conn.setConnectTimeout(timeout); wr = new OutputStreamWriter(conn.getOutputStream()); wr.write(data); wr.flush(); if (log.isDebugEnabled()) { reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); responseBuilder = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { responseBuilder.append(line).append("\n"); } log.debug(responseBuilder.toString()); return responseBuilder.toString(); } } catch (IOException e) { log.error("", e); } finally { if (wr != null) { try { wr.close(); } catch (IOException e) { log.error("close error", e); } } if (reader != null) { try { reader.close(); } catch (IOException e) { log.error("close error", e); } } } return null; } /** * post请求 * @param serverUrl 请求地址 * @param data 请求JSON数据 * @return * @throws Exception */ public static String post(String serverUrl, String data) throws Exception { return post(serverUrl,data,5000); } // 定制Verifier public class TrustAnyHostnameVerifier implements HostnameVerifier { public boolean verify(String hostname, SSLSession session) { return true; } } static TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { // TODO Auto-generated method stub } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { // TODO Auto-generated method stub } @Override public X509Certificate[] getAcceptedIssuers() { // TODO Auto-generated method stub return null; } } }; }
解决PBX请求报错
最新推荐文章于 2021-06-11 13:05:05 发布