SpringBoot RestTemplate调用第三方接口,更优雅的方式发送http请求

需求:调用第三方接口,传入参数。获取相关的数据。

大致步骤

  1. HttpHeaders 封装请求头信息
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLYCATION_JSON);// 设置返回内容的MIME类型
headers.set("Authorization","Basic MTM0NzY3Omd5ZjEyMzQ1"); // 设置访问的权限
  1. HttpEntity封装请求(请求头、请求体)
// 请求参数,要与第三方接口属性一致,有些接口并没有设置不区分大小写。
JSONObject jsonObject = new JSONObject();
jsonObject.put("WERKS","");
jsonObject.put("BEJIN","");
jsonObject.put("END","");
HttpEntity entity = new HttpEntity(jsonObject,headers);//封装响应体,响应头
  1. 返回POJO
@Data
public class SapBaseRsp<T>{
 //第三方接口对应的属性名
 @JsonProperty("ETYPE")
 private String status;
 @JsonProperty("EMSG")
 private String msg;
 @JsonProperty("RETURN")
 private T responseBody;
}
  1. RestTemplate访问远程服务, 使用ResponseEntity接收返回结果,并转换为json对象。
String url = "http://xxxxxxxxxxxx"; //访问的网址
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<SapBaseRsp> res = restTemplate.exchange(url,HttpMethos.POST,entity,SapBaseRsp.class);// 4个参数的含义为访问地址,请求方式,请求体,响应对象。
SapBaseRsp obj = res.getBody();
String obj1 = JSONObject.toJSONString(obj.getResponseBody);//FastJson类将pojo转换为字符串。
JSONObject object1 = new JSONObject();
//将json字符串转换为json对象
object1 = JSONObject.toParseObject(obj1);
//获取值
String name = object1.getString("NAME");//获取第三方接口的属性值。这样,不需要知道第三方接口的属性具体类型,全部当成字符串能够操作。

小结

  1. HttpHeaders可以根据需要自行配置多个值。
  2. HttpEntity封装的请求体不一定是JSONObject类型,使用Map也可以,要知道JSONObject本质也是map。若使用的是get方式的请求,可以没有这个对象。但若是使用的是post,则需要这个对象
  3. 使用RestTemplate对象时,有多种方法,根据需要选择
  • < T > restTemplate.postForEntity() 其中T 为:ResponseEntity
  • < T > restTemplate.postForObject() 其中T 为:方法参数中设置的对象

以上两者的区别是,第一种返回值包含了httpstatus和bodyBuilder,我们可以处理response原生的东西,比如响应的状态码等。第二种直接生成了实体,不能进行其他操作

  • < T > restTemplate.exchange()

这种方法可以设置请求类型,是POST还是GET还是其他。

在请求第三方接口的时候,需要注意第三方接口返回类型值,与我们的值是否对应,否则转换会出错。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值