spring restTemplate 进行http请求的工具类封装
本文为博主原创,未经允许不得转载:
1.对常用调用的方法进行封装:
import org.springframework.http.HttpHeaders; import com.alibaba.fastjson.JSONObject; public interface SpringRestService { public <T> T postWithJson(String url, JSONObject param, Class<T> responseType); public <T> T postWithJson(String url, HttpHeaders headers, JSONObject param, Class<T> responseType); public <T> T postWithJson(String url, HttpHeaders headers, String param, Class<T> responseType); public <T> T getForObject(String url, Class<T> responseType); public String getForObject(String url, HttpHeaders headers); public String getForXml(String url, HttpHeaders headers); }
2.对上面接口实现封装:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import com.alibaba.fastjson.JSONObject; import com.intf.service.springrest.SpringRestService; @Service("springRestService") public class SpringRestServiceImpl implements SpringRestService { @Autowired private RestTemplate restTemplate; private static final Logger LOGGER = LoggerFactory.getLogger(SpringRestServiceImpl.class); @Override public <T> T postWithJson(String url, JSONObject param, Class<T> responseType) { // 设置请求头 HttpHeaders headers = new HttpHeaders(); // 设置ContentType headers.setContentType(MediaType.APPLICATION_JSON_UTF8); // 请求 return postWithJson(url, headers, param, responseType); } @Override public <T> T postWithJson(String url, HttpHeaders headers, JSONObject param, Class<T> responseType) { // 请求 return postWithJson(url, headers, param.toString(), responseType); } @Override public <T> T postWithJson(String url, HttpHeaders headers, String param, Class<T> responseType) { // 设置ContentType headers.setContentType(MediaType.APPLICATION_JSON_UTF8); // 请求中设置param和headers HttpEntity<String> request = new HttpEntity<>(param, headers); // post请求并返回 return restTemplate.postForObject(url, request, responseType); } @Override public <T> T getForObject(String url, Class<T> responseType) { // get请求并返回 return restTemplate.getForObject(url, responseType); } @Override public String getForObject(String url, HttpHeaders headers) { // 设置ContentType headers.setContentType(MediaType.APPLICATION_JSON_UTF8); // 设置请求头 HttpEntity<String> requestEntity = new HttpEntity<>(null, headers); // get请求获取响应内容 ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class); // 返回响应body return response.getBody(); } @Override public String getForXml(String url, HttpHeaders headers) { // 设置ACCEPT headers.add("Accept", MediaType.APPLICATION_XML_VALUE); // 设置ContentType headers.setContentType(MediaType.APPLICATION_XML); // 设置请求头 HttpEntity<String> requestEntity = new HttpEntity<>(null, headers); // get请求获取响应内容 ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class); // 返回响应body LOGGER.info(url + "&&&&&" + response.toString() + "&&&&&" + response.getBody()); return response.getBody(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?