如何获取通用地图作为来自 restTemplate 交换方法的响应?

Posted

技术标签:

【中文标题】如何获取通用地图作为来自 restTemplate 交换方法的响应?【英文标题】:How to get a generic map as a response from restTemplate exchange method? 【发布时间】:2019-06-05 03:07:09 【问题描述】:

我们有一个 rest 服务,它返回一个类型为 map 的字节数组。如果我在没有泛型的情况下使用 Map,则在接收响应时,字节数组数据将转换为字符串。是否可以仅从服务器发送字节数据,如果可以,如何使用 RestTemplate 从客户端检索该数据?

 ResponseEntity<Map<String, byte[]>> result result = restTemplate.exchange("http://localhost:8085/api/fetchContent?Id=" + contentId+"&userName=trump", HttpMethod.GET, entity, Map.class, params);

上面的代码会产生一个编译问题,因为返回类型是一个映射。

【问题讨论】:

【参考方案1】:

使用ParameterizedTypeReference&lt;T&gt;:

ParameterizedTypeReference<Map<String, byte[]>> responseType =
        new ParameterizedTypeReference<Map<String, byte[]>>() ;

ResponseEntity<Map<String, byte[]>> responseEntity = 
        restTemplate.exchange("http://example.org", HttpMethod.GET, entity, responseType);

【讨论】:

以上是关于如何获取通用地图作为来自 restTemplate 交换方法的响应?的主要内容,如果未能解决你的问题,请参考以下文章

如何验证 RestTemplate 响应?

如何从 Spring RestTemplate 中的对象获取列表

Cesium可以加载百度地图吗

如何像在 RestTemplate 中一样从 WebClient 获取访问令牌?

如何使用 RestTemplate 在 List 中获取结果并将响应放入 List?

如何从使用对象的 RestTemplate 对象获取生成的 URL 信息... uriVariables [重复]