当前位置: 首页 > 知识库问答 >
问题:

使用restTemboard下载内容类型八位流文件

杭英杰
2023-03-14

在我的应用程序中,我从一个API响应接收一个文件,该响应的Content-TypeApplication/octet-stream

我试图返回这个文件到前端作为响应实体

但我得到了一个错误:

RestClientException:无法提取响应:未找到响应类型[class org.springframework.http.ResponseEntity]和内容类型[application/octet stream]的合适HttpMessageConverter

通过浏览一些文档,我想到了使用与RestTemplate中相同的responseEntityExtractor。获取实体。

我的代码:

RequestCallback requestCallback = request -> {
HttpHeaders headers1 = request
        .getHeaders();
headers1.set("Authorization", "Bearer " + template.getAccessToken());
headers1
        .setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM, MediaType.ALL));
};

ResponseExtractor<ResponseEntity<Resource>> responseExtractor = template.responseEntityExtractor(ResponseEntity.class);
template.execute(url, HttpMethod.GET, requestCallback, responseExtractor, uriVariables);

可以理解的是,通过在请求回调中设置setAccept,我们可以让restemplate知道预期的内容类型,并且responseEntityExtractor()返回ResponseExtractor

我错过了什么?


共有1个答案

韩弘壮
2023-03-14

而不是:

ResponseExtractor<ResponseEntity<Resource>> responseExtractor = template.responseEntityExtractor(ResponseEntity.class);

尝试在控制器方法中返回字节[]

ResponseExtractor<ResponseEntity<byte[]>> responseExtractor = template.responseEntityExtractor(byte[].class);
ResponseEntity<byte[]> results = template.responseEntityExtractor(byte[].class);
return results.getBody();

或这个返回响应实体

ResponseExtractor<ResponseEntity<byte[]>> responseExtractor = template.responseEntityExtractor(byte[].class);
ResponseEntity<byte[]> results = template.responseEntityExtractor(byte[].class);

ByteArrayResource byteArrayResource = new ByteArrayResource(results.getBody());
return new ResponseEntity<Resource>(byteArrayResource, null, HttpStatus.OK);

 类似资料:
  • 我有一个第三方服务,它用文件向我的Django应用程序发出POST请求。要成功上传到Django应用程序,请求必须具有“多部分/表单数据”内容类型,但在我的案例和请求中,内容类型是“八位流”。文件总是空的。我怎么能在Django中接收八位流内容类型的文件?

  • 我试图在我的Restful Spring Boot应用程序中实现pdf文件上传。 问题是,是我的Spring Controller方法出了问题,还是postman没有正确构建请求? 如果邮递员不能获得正确的内容类型,我能期望实际的客户端应用程序正确地将内容类型设置为PDF吗?

  • 有人知道为什么将内容类型设置为application/octet stream,然后在restify中未定义请求主体吗? 这是我的密码 HTTP请求 控制台打印:您好 控制台打印: 控制台打印:未定义

  • 我一直试图仅使用文件内容检测MIME类型,使用Apache Tika Core和Apache Tika Parser1.23 jars。下面是用于相同内容的代码: Tika无法检测扩展名为。tmp(text/plain file)和iso-8859-1字符集的文件的内容类型,内容如下: èé 通过以下方式正确检测具有相同配置和以下内容的文件: 000000000000000000000000000

  • 我正在处理一个API的一部分,它需要调用另一个外部API来检索它的一个函数的数据。调用返回HTTP 500错误,描述为“不支持内容类型‘应用程序/八位字节流’。”该调用应返回“application/json”类型。" 我发现这是因为接收到的响应没有在其头中显式指定内容类型,即使其内容的格式为JSON,所以我的API默认假定它是一个八位字节流。 问题是,我不知道如何适应这种情况。即使另一个API没

  • 可从PlayStation®Store购买游戏、下载游戏最新的免费体验版或宣传影片。 若要使用(PS Store),需先注册PlayStation®Network账号。即使未使用PS Vita注册PlayStation®Network也可阅览PlayStation®Store。下载内容时需先注册,请遵循显示的画面注册。 PlayStation®Network和PlayStation®Store的提