From a3716f72066d25d745f4d5103ff23a553c3e102b Mon Sep 17 00:00:00 2001
From: wayne <wayne8692wayne8692@gmail.com>
Date: 星期四, 17 二月 2022 11:41:19 +0800
Subject: [PATCH] Merge branch 'sit' into uat

---
 pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 114 insertions(+), 0 deletions(-)

diff --git a/pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java b/pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java
new file mode 100644
index 0000000..48cc43b
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java
@@ -0,0 +1,114 @@
+package com.pollex.pam.service.util;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.ssl.SSLContexts;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.*;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+import javax.net.ssl.SSLContext;
+import java.security.KeyManagementException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+import java.util.Map;
+import java.util.Set;
+
+public final class HttpRequestUtil {
+    private static final Logger log = LoggerFactory.getLogger(HttpRequestUtil.class);
+
+    private HttpRequestUtil() {}
+
+    public static <T> ResponseEntity<T> getWithJson(String url, Class<T> responseType)
+        throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException
+    {
+        return getWithJson(url, responseType, null);
+    }
+
+    public static <T> ResponseEntity<T> getWithJson(String url, Class<T> responseType, Map<String, String> addedHeaders)
+        throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException
+    {
+        RestTemplate restTemplate = getTrustAllRestTemplate();
+        HttpHeaders headers = new HttpHeaders();
+        setHeaders(headers, addedHeaders);
+
+        HttpEntity<String> httpEntity = new HttpEntity<>(headers);
+
+        log.debug("HttpRequestUtil get url: {}", url);
+        log.debug("httpEntity = {}", httpEntity);
+        return restTemplate.exchange(url, HttpMethod.GET, httpEntity, responseType);
+    }
+
+    public static ResponseEntity<String> postWithJson(String url, Object jsonData, Map<String, String> headers)
+        throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException
+    {
+        return postWithJson(url, jsonData, String.class, headers);
+    }
+
+    public static ResponseEntity<String> postWithJson(String url, Object jsonData)
+        throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException
+    {
+        return postWithJson(url, jsonData, String.class, null);
+    }
+
+    public static <T> ResponseEntity<T> postWithJson(String url, Object jsonData, Class<T> responseType)
+        throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException
+    {
+        return postWithJson(url, jsonData, responseType, null);
+    }
+
+    public static <T> ResponseEntity<T> postWithJson(String url, Object jsonData, Class<T> responseType, Map<String, String> addedHeaders)
+        throws JsonProcessingException, KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
+
+        String parameters = new ObjectMapper().writeValueAsString(jsonData);
+        // ���摨阡��脰��log����
+        if(parameters.length() < 1000){
+            log.debug("parameters : {}",parameters);
+        }
+
+        RestTemplate restTemplate = getTrustAllRestTemplate();
+
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        setHeaders(headers, addedHeaders);
+
+        HttpEntity<String> entity = new HttpEntity<>(parameters, headers);
+
+        log.debug("rest post with json, url = {}", url);
+        return restTemplate.exchange(url, HttpMethod.POST, entity, responseType);
+    }
+
+    private static void setHeaders(HttpHeaders headers, Map<String, String> addedHeaders) {
+        if(addedHeaders != null && addedHeaders.size() > 0) {
+            Set<String> keys = addedHeaders.keySet();
+            for (String key : keys) {
+                String headerValue = addedHeaders.get(key);
+                headers.set(key, headerValue);
+                log.info("http cust header key: {}", key);
+                log.info("http cust header headerValue: {}", headerValue);
+            }
+        }
+    }
+
+    private static RestTemplate getTrustAllRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
+        SSLContext sslContext = SSLContexts.custom()
+            .loadTrustMaterial(null, (X509Certificate[] x509Certs, String s) -> true)
+            .build();
+        SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier());
+        CloseableHttpClient httpClient = HttpClients.custom()
+            .setSSLSocketFactory(csf)
+            .build();
+        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
+        requestFactory.setHttpClient(httpClient);
+        requestFactory.setConnectTimeout(300000);
+        requestFactory.setReadTimeout(300000);
+        return new RestTemplate(requestFactory);
+    }
+}

--
Gitblit v1.8.0