From f2f691b017381b01c4529e2c647cdc6bd566e068 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 26 六月 2025 13:59:16 +0800
Subject: [PATCH] bug修改

---
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HttpClientUtil.java |   78 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 76 insertions(+), 2 deletions(-)

diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HttpClientUtil.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HttpClientUtil.java
index c30ad53..f74325c 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HttpClientUtil.java
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HttpClientUtil.java
@@ -7,16 +7,23 @@
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpPost;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.ssl.SSLContexts;
 import org.apache.http.util.EntityUtils;
 import org.springframework.stereotype.Component;
 
+import javax.net.ssl.SSLContext;
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.nio.charset.Charset;
+import java.security.KeyStore;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 
@@ -235,8 +242,75 @@
         return null;
     }
 
-
-
+    /**
+     * 请求https发送XML请求
+     * @param url           接口路径
+     * @param xml           内容
+     * @param header        请求头
+     * @param certPassword      证书密码
+     * @param certPath      证书路径
+     * @param certType      证书类型
+     * @return
+     * @throws Exception
+     */
+    public String pushHttpsRequsetXml(String url, String xml, Map<String, String> header, String certPassword, String certPath, String certType) throws Exception{
+        HttpPost httpPost = new HttpPost(url);
+        for(String key : header.keySet()){
+            httpPost.setHeader(key, header.get(key));
+        }
+        httpPost.setHeader("Content-Type", "application/xml");
+        try {
+            httpPost.setEntity(new StringEntity(xml, "UTF-8"));
+            this.getHttpCline();
+            this.initCert(certPassword, certPath, certType);
+            httpResponse = this.httpClient.execute(httpPost);
+            String content = null;
+            if(httpResponse.getStatusLine().getStatusCode() == 200){
+                try {
+                    content = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
+                } catch (IOException e) {
+                    e.printStackTrace();
+                    this.close();
+                }
+            }else{
+                try {
+                    content = "返回状态码:" + httpResponse.getStatusLine() + "。" + EntityUtils.toString(httpResponse.getEntity());
+                } catch (IOException e) {
+                    e.printStackTrace();
+                    this.close();
+                }
+            }
+            this.close();
+            return content;
+        } catch (IOException e) {
+            e.printStackTrace();
+            this.close();
+        }
+        return null;
+    }
+    /**
+     * 初始化https对象(带证书)
+     * @param key       证书密码
+     * @param certPath  证书路径
+     * @param certType  证书类型
+     * @throws Exception
+     */
+    private void initCert(String key, String certPath, String certType) throws Exception {
+        KeyStore keyStore = KeyStore.getInstance(certType);
+//        ClassPathResource cp = new ClassPathResource(certPath);
+        InputStream inputStream = new FileInputStream(new File(certPath));
+//        InputStream instream = cp.getInputStream();
+        try {
+            keyStore.load(inputStream, key.toCharArray());
+        } finally {
+            inputStream.close();
+        }
+        SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, key.toCharArray()).build();
+        SSLConnectionSocketFactory sslsf =
+                new SSLConnectionSocketFactory(sslcontext, new String[] {"TLSv1"}, null,
+                        SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
+        this.httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
+    }
     /**
      * 关闭资源
      */

--
Gitblit v1.7.1