首页 > 其他分享 >spring restTemplate 进行http请求的工具类封装

spring restTemplate 进行http请求的工具类封装

时间:2023-02-21 11:32:09浏览次数:37  
标签:http String url spring restTemplate HttpHeaders headers import public

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

  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();
}
}

 



标签:http,String,url,spring,restTemplate,HttpHeaders,headers,import,public
From: https://blog.51cto.com/u_15535797/6076397

相关文章

  • Springboot整合JWT封装工具类篇(二)
    前言:这里是将Springboot整合JWT测试篇(一)封装成工具类publicclassJWTUtils{//秘钥自己保管好privatestaticStringSECRET="token!Q@W3e4r";/**......
  • Springboot整合JWT测试篇(一)
    一、pom文件中引入依赖<!--引入jwt--><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.0</version></dependency>......
  • eclipse创建springBoot项目
    创建SpringBoot工程先在eclipse中安装spring-tool-suite插件,然后根据以下步骤可以创建1、新建SpringStarterProject2、Packaging选择jar 3、勾选Web项 4、项目结......
  • HTTP 常见的状态码有哪些,适用场景?
    一、是什么HTTP状态码(英语:HTTPStatusCode),用以表示网页服务器超文本传输协议响应状态的3位数字代码它由RFC2616规范定义的,并得到 RFC2518、RFC2817、RFC2295、RFC......
  • HTTP1.0、1.1和2.0的区别
    一、HTTP1.0HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版本HTTP1.0 浏览器与服务器只保持短暂的连接,每次请求都需要与服务器建立一个TCP连接服务器完成......
  • Spring Boot + Vue3 前后端分离 实战 wiki 知识库系统<二>---后端架构完善与接口开发
    数据库准备:在上一次https://www.cnblogs.com/webor2006/p/17114996.html已经将SpringBoot相关的配置环境给搭建好了,接下来则需要为咱们的项目创建一个数据库。1、mysql的......
  • [Sdoi2013] [bzoj 3198] spring (hash+容斥原理)
    题目描述给出个维坐标,求有多少对点对满足恰好个位置相等坐标数值在以内题目分析这道题一看就是hash容斥原理,用个位置对应相等个位置对应相等个位置对应相等的…但是不能......
  • http压力测试
    一、http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一......
  • SpringBoot集成Tomcat服务
    目录一、Tomcat集成1、依赖层级2、自动化配置二、Tomcat架构三、Tomcat配置1、基础配置2、属性配置类3、配置加载分析四、周期管理方法1、控制类2、核心方法五、参考源码......
  • 三天吃透Spring面试八股文(最新整理)
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校......