Spring RestTemplate 用于获取字节

问题描述 投票:0回答:4

我正在使用 Spring Framework

RestTemplate
获取字节数组。 但我还需要获取所获取结果的媒体类型

此字节数组的媒体类型可以是任何类型。

现在用于获取字节的代码如下。

HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.valueOf("application/pdf")));

ResponseEntity<byte[]> result = restTemp.exchange(
       url,
       HttpMethod.GET,
       entity,
       byte[].class,
       documentId
);

上述代码将仅获取 PDF 内容类型。

所以我有以下问题:

  • 如何设置内容类型以接受任何通用媒体类型,因为另一端的服务正在为字节数组提供任何随机媒体类型
  • 有人可以建议如何获取媒体类型吗?

欢迎任何建议。

java spring cxf spring-rest
4个回答
20
投票

只需不发送

accept
标头即可不强制服务器返回该
content-type
。这与发送通配符相同
*/*

//HttpHeaders headers = new HttpHeaders();
//headers.setAccept(Collections.singletonList(MediaType.WILDCARD));
ResponseEntity<byte[]> result = restTemp.exchange(url, HttpMethod.GET, entity, byte[].class,documentId);

此后,从响应的标题中提取

content-type

 byte body[] = result.getBody();
 MediaType contentType = result.getHeaders().getContentType();

1
投票

您可以将

MediaType
设置为
application/octet-stream
,看这里


0
投票

您可以在 HTTP 标头中存储媒体类型并使用 - 例如 ResponseEntity.getHeaders()。或者您可以将字节数组和媒体类型包装到holder类中。


0
投票

MediaType mediaType = result.getHeaders().getContentType();

© www.soinside.com 2019 - 2024. All rights reserved.