“https://some-service/”的 POST 请求出现 I/O 错误 流已关闭;嵌套异常是 java.io.IOException:流已关闭

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

我正在尝试使用 post 方法将文件上传到外部服务。

//final InputStream data = .... some imput stream;

 HttpHeaders headers = new HttpHeaders();
      headers.add(AUTHORIZATION_HEADER, String.format(AUTH_TOKEN_HEADER, "my-service-token"));
      headers.setContentType(MediaType.MULTIPART_FORM_DATA);

      LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
      map.add("data", new MultipartInputStreamFileResource(data, fileName));

      HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<>(map, headers);
      return getRestTemplate().postForObject("https://external-service/", requestEntity, MyResponse.class);

但是,我收到以下错误,老实说我找不到任何相关内容。

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://external-service/": Stream is closed; nested exception is java.io.IOException: Stream is closed
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:744)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670)
    at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:414)

注:

Spring-web:5.1.6.RELEASE

spring resttemplate spring-webclient
1个回答
0
投票

我无法发表评论,因此将其添加为答案,您可能会在读取流之前关闭该流。你能分享一下你是如何读取InputStream的吗?

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