上篇博客中,简单介绍了RestTemplate,只是用到了单元测试环节,如果在正式开发环境使用RestTemplate调用远程接口,还有一些配置要做。

一、配置类

由于Spring boot没有对RestTemplate做自动配置,所以我们需要写一个配置类引入RestTemplate。

@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
return new RestTemplate(factory);
} @Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);//单位为ms
factory.setConnectTimeout(5000);//单位为ms
return factory;
}
}

二、工具类

在实际开发过程中,可能对于调用远程接口有多种参数情况,因此写了一个工具类用来支持。

RestTemplate功能非常强大,Post请求的时候特别要注意,body参数必须为MultiValueMap类型。

@Service
public class RestTemplateService {
@Autowired
private RestTemplate restTemplate; /**
* 实测可用
*/
public JSONObject doGet(String url) {
JSONObject json = restTemplate.getForEntity(url, JSONObject.class).getBody();
return json;
} /**
* 实测可用
*/
public JSONObject doGet(String url, HttpHeaders headers) {
HttpEntity<String> entity = new HttpEntity<>(null, headers);
ResponseEntity<JSONObject> exchange = restTemplate.exchange(url, HttpMethod.GET, entity, JSONObject.class);
return exchange.getBody();
} /**
* 实测可用,body参数必须为MultiValueMap类型
*/
public JSONObject doPost(String url, MultiValueMap<String, Object> param) {
JSONObject json = restTemplate.postForEntity(url, param, JSONObject.class).getBody();
return json;
} /**
* 实测可用,body参数必须为MultiValueMap类型
*/
public JSONObject doPost(String url, MultiValueMap<String, Object> params, HttpHeaders headers) {
JSONObject json = restTemplate.postForObject(url, new HttpEntity<>(params, headers), JSONObject.class);
return json;
} }

最新文章

  1. jquery mobile 图片自适应问题
  2. Ubuntu下安装Java环境
  3. SecureCrt设置字符编码
  4. iOS 自定义进度条
  5. DevExpress GridControl使用方法总结(转)
  6. JVM相关问答
  7. Objective-c Category(类别)
  8. Raphaël—JavaScript Library
  9. C# C++ Java接口类型转换
  10. Bootstrap 使用清单组组件创建价格表
  11. redis intset(整数集合)
  12. Linux多线程实践(7) --多线程排序对比
  13. input框限制只能输入正整数、字母、小数、汉字
  14. 一次有趣的ant-design与后端数据交互的使用
  15. 强大的shell(一键redis,mysql,php,openresty,jdk)
  16. IntelliJ IDEA配置Tomcat(完整版教程)
  17. dialog弹层背景overlayer实现的方式
  18. C#通过Oracle.ManagedDataAccess无法访问Oralce
  19. java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
  20. QTextCodec 类

热门文章

  1. Method for training dynamic random access memory (DRAM) controller timing delays
  2. On-demand diverse path computation for limited visibility computer networks
  3. Winsock出错引起的断网
  4. Windows Container 和 Docker
  5. Android--数据持久化存储概述
  6. 简明Python3教程 14.输入输出
  7. 使用WPF实现3D场景[二]
  8. PAMIE- Python实现IE自动化的模块
  9. 如何将任意文件固定在 Win10 的开始屏幕中
  10. OnNavigatedTo 和 Loaded 的比较