From d93356927d8a0a5a91963c28d461d9107562d759 Mon Sep 17 00:00:00 2001 From: xin <1099200748@qq.com> Date: Fri, 30 May 2025 17:38:26 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/xin' --- oying-common/src/main/java/com/oying/utils/HttpRequest.java | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 101 insertions(+), 0 deletions(-) diff --git a/oying-common/src/main/java/com/oying/utils/HttpRequest.java b/oying-common/src/main/java/com/oying/utils/HttpRequest.java new file mode 100644 index 0000000..d3293c4 --- /dev/null +++ b/oying-common/src/main/java/com/oying/utils/HttpRequest.java @@ -0,0 +1,101 @@ +package com.oying.utils; + +import com.alibaba.fastjson2.JSONObject; +import com.oying.exception.BadRequestException; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.TrustStrategy; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContexts; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +import javax.net.ssl.SSLContext; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Map; + +/** + * 功能描述: + * + * @author LIX + * @date 创建时间 :2022/6/15 下午4:19 + */ +public class HttpRequest { + + + /** + * 读取请求数据流 + * + * @param request 请求数据 + * @return String + */ + public static String getRequestBody(HttpServletRequest request) { + StringBuilder sb = new StringBuilder(); + try (ServletInputStream inputStream = request.getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { + String line; + while ((line = reader.readLine()) != null) { + sb.append(line); + } + } catch (IOException e) { + throw new BadRequestException("读取数据流异常"); + } + return sb.toString(); + } + + /** + * 忽略ssl证书验证 + * + * @return HttpComponentsClientHttpRequestFactory + */ + public static HttpComponentsClientHttpRequestFactory getFactory() { + HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); + try { + TrustStrategy acceptingTrustStrategy = (chain, authType) -> true; + SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build(); + SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE); + HttpClientBuilder clientBuilder = HttpClients.custom(); + CloseableHttpClient httpClient = clientBuilder.setSSLSocketFactory(socketFactory).build(); + requestFactory.setHttpClient(httpClient); + } catch (Exception e) { + throw new BadRequestException("忽略ssl证书验证失败!!!"); + } + return requestFactory; + } + + private static HttpHeaders getHeaders() { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + return headers; + } + + /** + * http返回String + */ + public static String exchangeString(HttpMethod httpMethod, String url, Map<String, Object> map) { + HttpHeaders headers = getHeaders(); + HttpEntity<Object> httpEntity = new HttpEntity<>(map, headers); + RestTemplate restTemplate = new RestTemplate(); + return restTemplate.exchange(url, httpMethod, httpEntity, String.class).getBody(); + } + + /** + * http返回JSONObject + */ + public static JSONObject exchangeJsonObject(HttpMethod httpMethod, String url, Map<String, Object> map) { + HttpHeaders headers = getHeaders(); + HttpEntity<Object> httpEntity = new HttpEntity<>(map, headers); + RestTemplate restTemplate = new RestTemplate(); + return restTemplate.exchange(url, httpMethod, httpEntity, JSONObject.class).getBody(); + } +} -- Gitblit v1.9.3