使用 RestTemplate 接收 MultiValueMap 多部分/表单数据

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

我对此案有疑问,希望有人能帮助我。

所以我嘲笑了获取服务器:

@GetMapping(value = "/getMsgFileExt",
            produces = MediaType.MULTIPART_FORM_DATA_VALUE)
    public ResponseEntity<MultiValueMap<String, Object>> getMsgFileExt() throws IOException {
    MultiValueMap<String, Object> formData = new LinkedMultiValueMap<>();
    Path path = Paths.get("C:\\Users\\User\\IdeaProjects\\ccgw_sources\\TKmock\\src\\main\\resources\\test.txt.zip.total.zip");
    formData.add("xml", respDataMsgInfo);
    formData.add("zip", Base64.getEncoder().encodeToString(Files.readAllBytes(path)));
        return new ResponseEntity<>(formData, HttpStatus.OK);
}

客户端的接收者:

String uri = String.format("%s/getMsgFileExt", customsUrl);

UriComponents builder = UriComponentsBuilder.fromHttpUrl(uri)
  .queryParam("id", id)
  .build();

 ResponseEntity<MultiValueMap<String, Object>> response = customsCardRestTemplate.exchange(builder.toUriString(), HttpMethod.GET,
                                                                                                  null,
                                                                                                  new ParameterizedTypeReference<>() {});
MultiValueMap<String, Object> map = response.getBody();

但是我遇到了这个例外:

Could not extract response: no suitable HttpMessageConverter found for response type [org.springframework.util.MultiValueMap<java.lang.String, java.lang.Object>] and content type [multipart/form-data]

我已经阅读了这个主题RestTemplate & multipart/form-data response,但我确信 Spring Boot 有另一个解决方案。 或者也许我们有另一种方法来使用 xml 和 zip 发送/接收多部分?

java spring-boot multipartform-data resttemplate
1个回答
0
投票

您阅读过有关 Multipart 数据的 Spring 文档吗?这似乎是相关的(需要有 webflux 作为依赖项):

反应式核心::Spring框架

DefaultServerWebExchange 使用配置的 HttpMessageReader> 解析 多部分/表单数据、多部分/混合和多部分/相关内容 进入多值映射。

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