gpt4 book ai didi

java - Spring restTemplate execute() POST 大文件并获得响应

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:01 24 4
gpt4 key购买 nike

这花了我很长时间才弄清楚,所以我想分享一下。大多数信息来自 SO,我想合并到这个地方。

我的要求是使用 RESTFul POST 上传文件。由于文件可能很大,我想流式传输文件。我显然希望能够阅读回复。

我计划使用 Jersey 作为 REST 服务器,使用 Spring 的 RestTemplate 作为客户端(以及用于测试)。

我遇到的问题是流式传输 POST 和接收响应。我怎样才能做到这一点? (反问——我来回答!)

最佳答案

使用 RequestCallback 没有必要经历所有这些步骤。只需使用 PathResource .

PathResource pathResource = new PathResource(theTestFilePath);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(pathResource), String.class);

Spring 将使用 ResourceHttpMessageConverter将给定 Path 标识的文件序列化到请求正文。在内部,Spring 4.x 实现使用 4096 字节的缓冲区大小(这也是 IOUtils#copy(..) 使用的)。

显然,您可以提供所需的响应类型。上面的示例期望响应主体为 String。使用 ResponseEntity,您可以使用

访问所有响应 header
HttpHeaders responseHeaders = response.getHeaders();

关于java - Spring restTemplate execute() POST 大文件并获得响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30960273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com