2022-12-29
藏龙卧虎
00

目录

简介

简介

Java调用https类接口/地址的工具类。

其中Post方式未经过测试,请谨慎使用。

java
package com.hlkj.dncc.util; import com.hlkj.core.util.JsonUtils; import javax.net.ssl.*; import java.io.*; import java.net.URL; import java.nio.charset.StandardCharsets; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; /** * https请求工具类 * * @author DingDangDog * @date 2022/12/29 */ public class HttpsUtils { private HttpsUtils() { } private static SSLSocketFactory socketFactory; /** * 执行GET方式接口调用 * * @param url 接口地址 * @return String 返回数据 * @throws IOException e * @throws NoSuchAlgorithmException e * @throws KeyManagementException e */ public static String doGet(String url) throws IOException, NoSuchAlgorithmException, KeyManagementException { HttpsURLConnection connection = getConnection(url); connection.setRequestMethod("GET"); connection.connect(); // 读取返回数据 StringBuilder builder = new StringBuilder(); try (InputStream inputStream = connection.getInputStream(); InputStreamReader isr = new InputStreamReader(inputStream, StandardCharsets.UTF_8); BufferedReader br = new BufferedReader(isr)) { String line = null; while ((line = br.readLine()) != null) { builder.append(line); } } return builder.toString(); } public static String doPost(String url, Object body) throws IOException, NoSuchAlgorithmException, KeyManagementException { HttpsURLConnection connection = getConnection(url); connection.setRequestMethod("POST"); connection.connect(); // 发送数据 try (OutputStream outputStream = connection.getOutputStream()) { outputStream.write(JsonUtils.objectToString(body).getBytes(StandardCharsets.UTF_8)); } // 读取数据 StringBuilder builder = new StringBuilder(); try (InputStream inputStream = connection.getInputStream(); InputStreamReader isr = new InputStreamReader(inputStream, StandardCharsets.UTF_8); BufferedReader br = new BufferedReader(isr)) { String line = null; while ((line = br.readLine()) != null) { builder.append(line); } } return builder.toString(); } /** * ssl通信工厂 * * @return SSLSocketFactory * @throws KeyManagementException e * @throws NoSuchAlgorithmException e */ private static SSLSocketFactory getSslSocketFactory() throws KeyManagementException, NoSuchAlgorithmException { if (null != HttpsUtils.socketFactory) { return HttpsUtils.socketFactory; } SSLContext ssl = SSLContext.getInstance("SSL"); TrustManager[] trustManagers = {new X509TrustManager() { /** * 实例化一个信任连接管理器 * 空实现是所有的连接都能访问 */ @Override public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } }}; ssl.init(null, trustManagers, new SecureRandom()); HttpsUtils.socketFactory = ssl.getSocketFactory(); return HttpsUtils.socketFactory; } /** * 连接统一构造方法 * * @param url 接口地址 * @return HttpsURLConnection 连接器 * @throws IOException e * @throws NoSuchAlgorithmException e * @throws KeyManagementException e */ private static HttpsURLConnection getConnection(String url) throws IOException, NoSuchAlgorithmException, KeyManagementException { URL urlObj = new URL(url); HttpsURLConnection urlConnection = (HttpsURLConnection) urlObj.openConnection(); urlConnection.setSSLSocketFactory(getSslSocketFactory()); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); urlConnection.setRequestProperty("Accept-Charset", "utf-8"); return urlConnection; } }
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!