package com.dy.pipirrWebChat.util; import com.alibaba.fastjson2.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * @author ZhuBaoMin * @date 2024-02-23 15:42 * @LastEditTime 2024-02-23 15:42 * @Description */ @Component public class RestTemplateUtil { @Autowired private RestTemplate restTemplate; //@Qualifier("RestTemplateWithCert") //@Resource //private RestTemplate restTemplate; public JSONObject get(String url, Map queryParams) throws IOException { return get(url, queryParams, new HashMap<>(1)); } public JSONObject get(String url, Map queryParams, Map headerParams) throws IOException { String tempUrl = setParamsByAppendUrl(queryParams, url); HttpHeaders headers = new HttpHeaders(); headerParams.forEach(headers::add); HttpEntity> httpEntity = new HttpEntity<>(null, headers); ResponseEntity response = restTemplate.exchange(tempUrl, HttpMethod.GET, httpEntity, String.class); return JSONObject.parseObject(response.getBody()); } public JSONObject get2(String url, Map queryParams, Map headerParams) throws IOException { String tempUrl = setParamsByPath(queryParams, url); HttpHeaders headers = new HttpHeaders(); headerParams.forEach(headers::add); HttpEntity> httpEntity = new HttpEntity<>(null, headers); ResponseEntity response = restTemplate.exchange(tempUrl, HttpMethod.GET, httpEntity, String.class, queryParams); return JSONObject.parseObject(response.getBody()); } public JSONObject post(String url, String json, Map headerParams) { HttpHeaders headers = new HttpHeaders(); headerParams.forEach(headers::add); headers.setContentType(MediaType.APPLICATION_JSON); headers.add("Accept", MediaType.APPLICATION_JSON.toString()); HttpEntity httpEntity = new HttpEntity<>(json, headers); ResponseEntity response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class); return JSONObject.parseObject(response.getBody()); } private String setParamsByPath(Map queryParams, String url) { // url?id={id}&name={name} if (queryParams == null || queryParams.isEmpty()) { return url; } StringBuilder sb = new StringBuilder(); try { for (Map.Entry entry : queryParams.entrySet()) { sb.append("&").append(entry.getKey()).append("=").append("{").append(entry.getKey()).append("}"); } if (!url.contains("?")) { sb.deleteCharAt(0).insert(0, "?"); } } catch (Exception e) { e.printStackTrace(); } return url + sb; } private String setParamsByAppendUrl(Map queryParams, String url) { // url?id=1&name=zzc if (queryParams == null || queryParams.isEmpty()) { return url; } StringBuilder sb = new StringBuilder(); try { for (Map.Entry entry : queryParams.entrySet()) { sb.append("&").append(entry.getKey()).append("="); sb.append(entry.getValue()); } if (!url.contains("?")) { sb.deleteCharAt(0).insert(0, "?"); } } catch (Exception e) { e.printStackTrace(); } return url + sb; } }