您现在的位置是:首页 > Javascript
当前栏目
spring restTemplate 进行http请求的工具类封装
2023-04-18 13:15:11 时间
本文为博主原创,未经允许不得转载:
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(); } }
相关文章
- 前端面试 【JavaScript】— typeof 是否能正确判断类型?
- 前端面试 【JavaScript】— instanceof 能否判断基本数据类型?
- 前端面试 【JavaScript】— 能不能手动实现一下 instanceof 的功能?
- 前端面试 【JavaScript】— Object.is和=== 有什么区别?
- 前端面试 【JavaScript】— JS中类型转换有哪几种?
- 前端面试 【JavaScript】— == 和 ===有什么区别?
- 前端面试 【JavaScript】— 对象转原始类型是根据什么流程运行的?
- JavaScript 的 parseInt() 函数
- javascript实现两个数字进行组合
- JS监听键盘按键
- 大前端开发中的路由管理之五:Flutter篇
- Javascript的DOM操作
- 在Vue项目中使用WebSocket技术
- 新手向:前端程序员必学基本技能——调试JS代码
- React 毁了 Web 开发!
- 「JS 逆向百例」cnki 学术翻译 AES 加密分析
- 商标注册域名后缀用什么?商标和域名有哪些区别?
- 网站建设流程是怎样的?需要看重哪些细节?
- 网站域名商标注册流程是什么?网站域名商标有什么用?
- 如何建设一个实用性强的网站 网站上线后如何运营