|
@@ -0,0 +1,94 @@
|
|
|
+package com.ruoyi.common.utils.http;
|
|
|
+
|
|
|
+
|
|
|
+import javax.net.ssl.*;
|
|
|
+import java.io.*;
|
|
|
+import java.net.URL;
|
|
|
+import java.security.KeyManagementException;
|
|
|
+import java.security.NoSuchAlgorithmException;
|
|
|
+import java.security.SecureRandom;
|
|
|
+import java.security.cert.CertificateException;
|
|
|
+import java.security.cert.X509Certificate;
|
|
|
+
|
|
|
+public class HttpsUtil {
|
|
|
+
|
|
|
+ private static final class DefaultTrustManager implements X509TrustManager {
|
|
|
+ @Override
|
|
|
+ public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public X509Certificate[] getAcceptedIssuers() {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private static HttpsURLConnection getHttpsURLConnection(String uri, String method) throws IOException {
|
|
|
+ SSLContext ctx = null;
|
|
|
+ try {
|
|
|
+ ctx = SSLContext.getInstance("TLS");
|
|
|
+ ctx.init(new KeyManager[0], new TrustManager[] { new DefaultTrustManager() }, new SecureRandom());
|
|
|
+ } catch (KeyManagementException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } catch (NoSuchAlgorithmException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ SSLSocketFactory ssf = ctx.getSocketFactory();
|
|
|
+
|
|
|
+ URL url = new URL(uri);
|
|
|
+ HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection();
|
|
|
+ httpsConn.setSSLSocketFactory(ssf);
|
|
|
+ httpsConn.setHostnameVerifier(new HostnameVerifier() {
|
|
|
+ @Override
|
|
|
+ public boolean verify(String arg0, SSLSession arg1) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ httpsConn.setRequestMethod(method);
|
|
|
+ httpsConn.setDoInput(true);
|
|
|
+ httpsConn.setDoOutput(true);
|
|
|
+ return httpsConn;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static byte[] getBytesFromStream(InputStream is) throws IOException {
|
|
|
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
|
+ byte[] kb = new byte[1024];
|
|
|
+ int len;
|
|
|
+ while ((len = is.read(kb)) != -1) {
|
|
|
+ baos.write(kb, 0, len);
|
|
|
+ }
|
|
|
+ byte[] bytes = baos.toByteArray();
|
|
|
+ baos.close();
|
|
|
+ is.close();
|
|
|
+ return bytes;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void setBytesToStream(OutputStream os, byte[] bytes) throws IOException {
|
|
|
+ ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
|
|
|
+ byte[] kb = new byte[1024];
|
|
|
+ int len;
|
|
|
+ while ((len = bais.read(kb)) != -1) {
|
|
|
+ os.write(kb, 0, len);
|
|
|
+ }
|
|
|
+ os.flush();
|
|
|
+ os.close();
|
|
|
+ bais.close();
|
|
|
+ }
|
|
|
+
|
|
|
+ public static byte[] doGet(String uri) throws IOException {
|
|
|
+ HttpsURLConnection httpsConn = getHttpsURLConnection(uri, "GET");
|
|
|
+ return getBytesFromStream(httpsConn.getInputStream());
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String doPost(String uri, String data) throws IOException {
|
|
|
+ HttpsURLConnection httpsConn = getHttpsURLConnection(uri, "POST");
|
|
|
+ setBytesToStream(httpsConn.getOutputStream(), data.getBytes());
|
|
|
+ byte[] ret = getBytesFromStream(httpsConn.getInputStream());
|
|
|
+ return new String(ret);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|