package com.ruoyi.common.utils; 
 | 
  
 | 
import okhttp3.*; 
 | 
  
 | 
import javax.net.ssl.SSLContext; 
 | 
import javax.net.ssl.TrustManager; 
 | 
import javax.net.ssl.X509TrustManager; 
 | 
import java.io.IOException; 
 | 
import java.security.SecureRandom; 
 | 
import java.security.cert.X509Certificate; 
 | 
  
 | 
public class OkHttpExample { 
 | 
  
 | 
    public static OkHttpClient createUnsafeOkHttpClient() { 
 | 
  
 | 
        SSLContext sslContext; 
 | 
        X509TrustManager trustManager = null; 
 | 
        try { 
 | 
            // 创建一个信任所有证书的 TrustManager 
 | 
            TrustManager[] trustAllManagers = new TrustManager[]{new X509TrustManager() { 
 | 
                @Override 
 | 
                public void checkClientTrusted(X509Certificate[] chain, String authType) { 
 | 
                } 
 | 
  
 | 
                @Override 
 | 
                public void checkServerTrusted(X509Certificate[] chain, String authType) { 
 | 
                } 
 | 
  
 | 
                @Override 
 | 
                public X509Certificate[] getAcceptedIssuers() { 
 | 
                    return new X509Certificate[0]; 
 | 
                } 
 | 
            }}; 
 | 
  
 | 
            // 保存 TrustManager 
 | 
            trustManager = (X509TrustManager) trustAllManagers[0]; 
 | 
  
 | 
            // 初始化 SSLContext 
 | 
            sslContext = SSLContext.getInstance("TLS"); 
 | 
            sslContext.init(null, trustAllManagers, new SecureRandom()); 
 | 
        } catch (Exception e) { 
 | 
            throw new IllegalStateException("Failed to initialize SSLContext", e); 
 | 
        } 
 | 
  
 | 
        // 创建 OkHttpClient,设置自定义的 SSLContext 
 | 
        return new OkHttpClient.Builder().sslSocketFactory(sslContext.getSocketFactory(), trustManager) // 直接使用保存的 TrustManager 
 | 
                .hostnameVerifier((hostname, session) -> true) // 忽略主机名验证 
 | 
                .build(); 
 | 
    } 
 | 
  
 | 
  
 | 
    public static String sendPostRequest(String url, String jsonBody, String token) throws IOException { 
 | 
        // 创建 OkHttpClient 实例 
 | 
        OkHttpClient client = createUnsafeOkHttpClient(); 
 | 
  
 | 
        // 创建请求体 
 | 
        MediaType JSON = MediaType.parse("application/json; charset=utf-8"); 
 | 
        RequestBody body = RequestBody.create(JSON, jsonBody);  // 修改为这种形式 
 | 
        // 创建请求,设置请求头和请求体 
 | 
        Request request = new Request.Builder().url(url).addHeader("Authorization", token)// 设置 Token 
 | 
                .post(body).build(); 
 | 
  
 | 
        // 执行请求并获取响应 
 | 
        try (Response response = client.newCall(request).execute()) { 
 | 
            if (response.isSuccessful()) { 
 | 
                return response.body().string(); // 返回响应体 
 | 
            } else { 
 | 
                throw new IOException("Unexpected code " + response); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |