本文为博主原创,未经允许不得转载:

  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请求的工具类封装的更多相关文章

  1. spring data jpa 动态查询(工具类封装)

    利用JPA的Specification<T>接口和元模型就实现动态查询了.但是这样每一个需要动态查询的地方都需要写一个这样类似的findByConditions方法,小型项目还好,大型项目 ...

  2. Spring 注解(二)注解工具类 AnnotationUtils 和 AnnotatedElementUtils

    Spring 注解(二)注解工具类 AnnotationUtils 和 AnnotatedElementUtils Spring 系列目录(https://www.cnblogs.com/binary ...

  3. HttpUtils 用于进行网络请求的工具类

    原文:http://www.open-open.com/code/view/1437537162631 import java.io.BufferedReader; import java.io.By ...

  4. 获取Spring容器中Bean实例的工具类(Java泛型方法实现)

    在使用Spring做IoC容器的时候,有的类不方便直接注入bean,需要手动获得一个类型的bean. 因此,实现一个获得bean实例的工具类,就很有必要. 以前,写了一个根据bean的名称和类型获取b ...

  5. HTTP请求客户端工具类

    1.maven 引入依赖 <dependency> <groupId>commons-httpclient</groupId> <artifactId> ...

  6. 发送http请求和https请求的工具类

    package com.haiyisoft.cAssistant.utils; import java.io.IOException;import java.util.ArrayList; impor ...

  7. spring自带的MD5加密工具类

    Spring 自带的md5加密工具类,本来打算自己找一个工具类的,后来想起来Spring有自带的,就翻了翻 //导入包import org.springframework.util.DigestUti ...

  8. Spring 注解(二)注解工具类

    本文转载自Spring 注解(二)注解工具类 导语 首先回顾一下 AnnotationUtils 和 AnnotatedElementUtils 这两个注解工具类的用法: @Test @GetMapp ...

  9. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

随机推荐

  1. [LeetCode]319. Bulb Switcher灯泡开关

    智商压制的一道题 这个题有个数学定理: 一般数(非完全平方数)的因子有偶数个 完全平凡数的因子有奇数个 开开关的时候,第i个灯每到它的因子一轮的时候就会拨动一下,也就是每个灯拨动的次数是它的因子数 而 ...

  2. [LeetCode]实现数学计算

    乘方 思路是:pow(x,n) = pow(x,n/2)*pow(x,n-n/2) 递归实现 public double myPow(double x, int n) { if (n==0) retu ...

  3. JavaScript window.onload 事件和 jQuery ready 函数有何不同?

    JavaScript window.onload 事件和 jQuery ready 函数之间的主要区别是,前者除了要等待 DOM 被创建还要等到包括大型图片.音频.视频在内的所有外部资源都完全加载.如 ...

  4. CI持续集成理论知识

    (1)什么是CI What is CI? CI就是持续集成,持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过 ...

  5. logback日志对象要素

    <logger>节点 分两种 1.是普通日志对象 logger分为2种,一种是普通日志对象,另一种是根日志对象.对于大部分应用来说,只设置根日志对象即可. 在java日志系统中,无论是lo ...

  6. lambda表达式之方法引用

    /** * 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器.<br> * 与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码. ...

  7. 翻译 | 30个 Python3 的最佳实践,技巧和窍门

    1.使用 Python3 如果你关注 Python 的话,应该会知道 Python 2 已经于今年(2020 年)1 月 1 日正式弃用了.这份教程的很多例子都是只支持 Python 3 的,如果你还 ...

  8. Docker环境下升级PostgreSQL

    查阅PostgreSQL官方文档可以得知,官方提供了两种方式对数据库进行升级--pg_dumpall与pg_upgrade. pg_dumpall是将数据库转储成一个脚本文件,然后在新版数据库中可以直 ...

  9. Kubernetes学习笔记之安装minikube并运行个简单应用程序

    前言:本笔记仅记录学习记录,可能存在错误!!!使用的环境是Ubuntu Desktop 20.04,也有用Windows 10 操作的,根据的文档是minikube的文档教程,链接:https://m ...

  10. Hbase snapshot数据迁移

    # 在源集群中创建快照(linux shell) hbase snapshot -t <table_name> -n <snapshot_name> 或(hbase shell ...