java - 如何使用 RestTemplate 交换获取数据?
问题描述
我目前正在发送一个在响应GET request
中返回正文的内容。null
@Service
public class CarService {
private RestTemplate restTemplate;
private final String url = "url";
private final String accessToken = "x";
@Autowired
public CarService () throws URISyntaxException {
restTemplate = new RestTemplate();
}
public void fetchCars() throws URISyntaxException {
HttpHeaders headers = new HttpHeaders();
headers.setBearerAuth(accessToken);
headers.setAccept(List.of(MediaType.APPLICATION_JSON));
ResponseEntity<CarList> carList = restTemplate.exchange
(RequestEntity.get(new URI(url)).headers(headers).build(), CarList.class);
}
}
CarList.class 如下所示:
@JsonIgnoreProperties(ignoreUnknown = true)
public class CarList{
private List<Car> carList;
public CarList(List<Car> carList) {
this.carList= carList;
}
public CarList() {
}
public List<Car> getCarList() {
return carList;
}
@Override
public String toString() {
return "CarList{" +
"carList=" + carList +
'}';
}
}
Postman 中的响应如下所示:
{
"cars": [
{
"carUid": "aaaa-ccc-dd-cc-ee",
"model": "hyundai",
"price": 20000,
"soldAt": "2021-09-24T22:10:15.307Z"
}
]
}
我错过了什么吗?这是我第一次尝试从客户那里消费,所以要考虑我可能遗漏的最基本的东西。
我已经用给定的 accessToken 在 Postman 中测试了 GET 请求,它工作正常。
解决方案
您的 carList 对象是私有的,请尝试为该对象提供一个 setter 方法,如果合同正常,则反序列化将正常工作。
@JsonIgnoreProperties(ignoreUnknown = true)
public class CarList{
private List<Car> carList;
public CarList(List<Car> carList) {
this.carList= carList;
}
public CarList() {
}
public List<Car> getCarList() {
return carList;
}
public setCarList(List<Car> carList) {
this.carList= carList;
}
@Override
public String toString() {
return "CarList{" +
"carList=" + carList +
'}';
}
}
推荐阅读
- python - %d 在这一行做了什么?
- mongodb - 这是过滤词袋语料库的最佳 mongodb 模式吗?
- python - 使用 django-mama-cas 和 django-cas-ng 对用户进行身份验证时是否可以应用组成员身份?
- html - json 转换为 html 表(反应)
- python - 如何在 Python 中获取 geckdriver 的绝对路径
- python - 在 tkinter Gui 界面中打印天气更新
- angularjs - 我怎样才能在桌子上有一个 ngChange?
- java - 特定值的可重入读写锁
- ruby-on-rails - Ruby on Rails - 为什么没有显示我所有的课程平均分?
- excel - 根据多列条件复制部分行并根据相同条件粘贴到行