本文概览:通过RestTemplate来实现调用服务方提供的http接口。不需要再自己实现HttpClient

1 背景

在系统中需要调用外部系统的http接口,将返回json解析成对象。一般逻辑是

  • 首先提供定义一个HttpClient来访问http接口
  • 然后通过jackson来解析返回的json

对于这个流程,Spring RestTemplate已经帮我们实现了。可以直接使用。

2 返回类型

根据不同返回类型来介绍使用实例。

  • List
  • Map
  • Object
  • Json字符串

2.1 返回Object

1、服务方提供的接口的返回值

2、代码

(1)使用RestTemplate

(2)定义两个对象

  • 定义Response

  • Vo对象

2.2 复杂的类型

如返回类型是Map<String,Map<String,Object>>,可以通过如下步骤:

  • Step1 转换成String
  • Step2 通过TypeReference将String转成复杂的对象。这里使用的是fastJson

3 参数类型

3.1 被调用接口如何接受参数

以post为例,会有如下方法

  • 参数类型是map时,此时类似前端参数为form表单。
  • 参数是Obect类型,此时相当于前端传参数是json,此时被调用的接口中必须使用@ReqeustBody

4 常见问题

4.1 “Not enough variable values available to expand”

当 url为 “http://xxxxx.com/qeury?uri=/test/{gourp}”,然后执行如下代码时,就会出现这个“Not enough variable values available to expand”错误。

这个错误是因为大括号引起来的,在网上常见一个做法如下:https://stackoverflow.com/questions/21819210/using-resttemplate-in-spring-exception-not-enough-variables-available-to-expan

对应代码:

但是我们确实把{group}当成参数,而不是变量,所以此时做法如下

(…待完善…)

分类&标签

发表评论

电子邮件地址不会被公开。 必填项已用*标注