如何使用RestTemplate转发大文件?

如何使用RestTemplate转发大文件?,第1张

如何使用RestTemplate转发大文件?

您可以使用

execute
这种低级 *** 作。在此代码段中,我使用了Commons
IO的
copy
方法来复制输入流。您需要
HttpMessageConverterExtractor
针对期望的响应类型自定义。

final InputStream fis = new FileInputStream(new File("c:\autoexec.bat")); // or whateverfinal RequestCallback requestCallback = new RequestCallback() {     @Override    public void doWithRequest(final ClientHttpRequest request) throws IOException {        request.getHeaders().add("Content-type", "application/octet-stream");        IOUtils.copy(fis, request.getBody());     }};final RestTemplate restTemplate = new RestTemplate();SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();requestFactory.setBufferRequestBody(false);     restTemplate.setRequestFactory(requestFactory);     final HttpMessageConverterExtractor<String> responseExtractor =    new HttpMessageConverterExtractor<String>(String.class, restTemplate.getMessageConverters());restTemplate.execute("http://localhost:4000", HttpMethod.POST, requestCallback, responseExtractor);

(感谢巴兹(Baz)指出您需要致电

setBufferRequestBody(false)
,否则将导致败笔



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4926687.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存