rentaiming
2024-05-22 dc0ade6bfc59db3d133673952bd674ba7a63dc84
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package com.ruoyi.member.util;
 
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.URL;
 
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import com.alibaba.fastjson.JSONObject;
 
public class WX_HttpsUtil {
    private static Logger log = LoggerFactory.getLogger(WX_HttpsUtil.class); /**
     * 发送https请求
     * @param requestUrl 请求地址
     * @param requestMethod 请求方式(GET、POST)
     * @param outputStr 提交的数据
     * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
     */ public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {
         JSONObject jsonObject = null; 
         try { 
             // 创建SSLContext对象,并使用我们指定的信任管理器初始化 
             TrustManager[] tm = { 
                     new MyX509TrustManager() 
                     }; 
             SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); 
             sslContext.init(null, tm, new java.security.SecureRandom()); 
             // 从上述SSLContext对象中得到SSLSocketFactory对象 
             SSLSocketFactory ssf = sslContext.getSocketFactory(); 
             URL url = new URL(requestUrl); 
             HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 
             conn.setSSLSocketFactory(ssf); conn.setDoOutput(true); 
             conn.setDoInput(true);
             conn.setUseCaches(false); 
             // 设置请求方式(GET/POST) 
             conn.setRequestMethod(requestMethod); 
             // 当outputStr不为null时向输出流写数据 
             if (null != outputStr) { 
                 OutputStream outputStream = conn.getOutputStream(); 
                 // 注意编码格式 
                 outputStream.write(outputStr.getBytes("UTF-8")); 
                 outputStream.close(); 
                 } 
                  // 从输入流读取返回内容 
             InputStream inputStream = conn.getInputStream(); 
             InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String str = null; StringBuffer buffer = new StringBuffer();
            while ((str = bufferedReader.readLine()) != null) 
            { buffer.append(str); 
            } 
            // 释放资源 
            bufferedReader.close(); 
            inputStreamReader.close(); 
            inputStream.close(); 
            inputStream = null; 
            conn.disconnect(); 
            jsonObject = JSONObject.parseObject(buffer.toString()); 
            } catch (ConnectException ce)
         { 
                log.error("连接超时:{}", ce); 
         } catch (Exception e) 
         { 
             log.error("https请求异常:{}", e); 
         } 
         return jsonObject;
     }
}