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();
}
}
spring restTemplate 进行http请求的工具类封装的更多相关文章
- spring data jpa 动态查询(工具类封装)
利用JPA的Specification<T>接口和元模型就实现动态查询了.但是这样每一个需要动态查询的地方都需要写一个这样类似的findByConditions方法,小型项目还好,大型项目 ...
- Spring 注解(二)注解工具类 AnnotationUtils 和 AnnotatedElementUtils
Spring 注解(二)注解工具类 AnnotationUtils 和 AnnotatedElementUtils Spring 系列目录(https://www.cnblogs.com/binary ...
- HttpUtils 用于进行网络请求的工具类
原文:http://www.open-open.com/code/view/1437537162631 import java.io.BufferedReader; import java.io.By ...
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
在使用Spring做IoC容器的时候,有的类不方便直接注入bean,需要手动获得一个类型的bean. 因此,实现一个获得bean实例的工具类,就很有必要. 以前,写了一个根据bean的名称和类型获取b ...
- HTTP请求客户端工具类
1.maven 引入依赖 <dependency> <groupId>commons-httpclient</groupId> <artifactId> ...
- 发送http请求和https请求的工具类
package com.haiyisoft.cAssistant.utils; import java.io.IOException;import java.util.ArrayList; impor ...
- spring自带的MD5加密工具类
Spring 自带的md5加密工具类,本来打算自己找一个工具类的,后来想起来Spring有自带的,就翻了翻 //导入包import org.springframework.util.DigestUti ...
- Spring 注解(二)注解工具类
本文转载自Spring 注解(二)注解工具类 导语 首先回顾一下 AnnotationUtils 和 AnnotatedElementUtils 这两个注解工具类的用法: @Test @GetMapp ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
随机推荐
- TreeMap集合根据指定元素,进行删除和修改的两种方式实现及bug梳理
TreeMap根据key中的指定元素进行删除修改的两种方式实现及注意事项: 方式一:利用增强for进行删除和修改 总结:逻辑简单,但是局限性太强,如果排序规则是从小到大进行排序的,则该方法不能进行删除 ...
- 运行jar提示“没有主清单属性”的解决方法
以下记录的是我export jar包后运行遇到问题的解决方法,如有错误,欢迎批评指正. 1.运行导出jar包,提示"没有主清单属性" 2.回想自己导出jar的操作是否有误,重新ex ...
- ArrayList的删除姿势你都知道了吗
引言 前几天有个读者由于看了<ArrayList哪种遍历效率最好,你真的弄明白了吗?>问了个问题普通for循环ArrayList为什么不能删除连续重复的两个元素?其实这个描述是不正确的.正 ...
- Linux性能优化:CPU性能分析工具--vmstat
Blog:博客园 个人 目录 参数说明 输出信息说明 procs memory swap io system cpu 示例 vmstat是Virtual Meomory Statistics(虚拟内存 ...
- vue3系列:vue3.0自定义全局弹层V3Layer|vue3.x pc桌面端弹窗组件
基于Vue3.0开发PC桌面端自定义对话框组件V3Layer. 前两天有分享一个vue3.0移动端弹出层组件,今天分享的是最新开发的vue3.0版pc端弹窗组件. V3Layer 一款使用vue3.0 ...
- pydub "Couldn't find ffmpeg or avconv - defaulting to ffmpeg" 问题解决
我通过 命令行安装了pydub库,运行报了如下错误 RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but ...
- hive on spark:return code 30041 Failed to create Spark client for Spark session原因分析及解决方案探寻
最近在Hive中使用Spark引擎进行执行时(set hive.execution.engine=spark),经常遇到return code 30041的报错,为了深入探究其原因,阅读了官方issu ...
- .NET 云原生架构师训练营(模块二 基础巩固 MongoDB API实现)--学习笔记
2.5.7 MongoDB -- API实现 问题查询单个实现 问题查询列表实现 问题跨集合查询实现 问题创建实现 问题更新实现 问题回答实现 问题评论实现 问题投票实现 回答实现 QuestionC ...
- ABP vNext 自动注入,暗藏天坑如斯
导言 我们在使用ABP vNext框架时,都知道该框架为我们实现了自动依赖注入(实现自动注入需要在项目里面创建Module类,并且将Module类上的DependsOn到相应的启动Module类或调用 ...
- python学习笔记 | strftime()格式化输出时间
time模块 import time t = time.strftime("%Y-%m-%d %H:%M:%S") print(t) datetime模块 import datet ...