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