/* * Copyright (c) 2021 * User:王绍全 * File:RequestHelper.java * Date:2021/07/23 12:02:23 */ package com.ynxbd.push.helper; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; 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.HttpClients; import org.apache.http.ssl.SSLContextBuilder; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.util.MultiValueMap; 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.util.List; import java.util.Map; @Slf4j public class RequestHelper extends SimpleClientHttpRequestFactory { public static RestTemplate getRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, (TrustStrategy) (arg0, arg1) -> true).build(); SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, new String[]{"TLSv1.2", "TLSv1.1"}, null, NoopHostnameVerifier.INSTANCE); CloseableHttpClient httpClient = HttpClients.custom() .setSSLSocketFactory(csf) .build(); HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); requestFactory.setHttpClient(httpClient); return new RestTemplate(requestFactory); } /** * 向目的URL发送post请求 * * @param url 目的url * @param params 发送的参数 * @return ResultVO */ public static T post(String url, MultiValueMap params, Class clazz) throws Exception { HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/x-www-form-urlencoded"); HttpEntity> request = new HttpEntity<>(params, headers); return getRestTemplate().postForObject(url, request, clazz); } /** * 向目的URL发送get请求 * * @param url 请求地址 * @param params 请求参数 * @return ResultVO */ public static T get(String url, Map params, Class clazz) { RestTemplate client = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/x-www-form-urlencoded"); HttpEntity> request = new HttpEntity<>(params,headers); ResponseEntity responseEntity = client.getForEntity(url, String.class, request); String data = responseEntity.getBody(); return JSON.parseObject(data, clazz); } /** * 获取post流中的参数 * * @param name 参数名称 * @param paramsMap 请求参数 * @param clazz 集合类型 * @return list */ public static List getBodyList(Map paramsMap, String name, Class clazz) { Object param = paramsMap.get(name); if (param == null) { return null; } String json = JSON.toJSONString(param); if ("".equals(json)) { return null; } return JSON.parseArray(json, clazz); } /** * 获取post流中的参数 * * @param name 参数名称 * @param paramsMap 请求参数 * @return list */ public static String getBodyString(Map paramsMap, String name) { Object param = paramsMap.get(name); if (param == null) { return null; } String paramStr = String.valueOf(param); if (!"null".equals(paramStr)) { return paramStr; } return null; } public static void main(String[] args) { } }