1

1.总结问题

我正在尝试使用 RestTemplate 将逗号分隔值(CSV 格式的数据,而不是 csv 文件)读入 responseEntity(ResponseEntity<List<Map<String, Object>>> responseEntity)。

但是,我在下面收到错误。

org.springframework.web.client.RestClientException:提取类型 [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] 和内容类型 [text/csv] 的响应时出错;charset=utf-8]; 嵌套异常是 org.springframework.http.converter.HttpMessageNotReadableException:JSON 解析错误:无法反序列化java.util.ArrayList超出 VALUE_STRING 令牌的实例;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化java.util.ArrayList[Source: (PushbackInputStream); 行:1,列:1]

2.描述你尝试了什么

: 我试过一些Messageconverters。

从这里 https://www.logicbig.com/tutorials/spring-framework/spring-web-mvc/csv-msg-converter.html 我在那里得到了一些有用的信息并使用了一些。但我一直收到同样的错误。

3.适当的时候,显示一些代码

            Map<String, Object> requestBody = new HashMap<>();
            List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
            MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();

            messageConverters.add(new ByteArrayHttpMessageConverter());
            messageConverters.add(new StringHttpMessageConverter());
            messageConverters.add(new ResourceHttpMessageConverter());
            messageConverters.add(new MappingJackson2HttpMessageConverter());
            messageConverters.add(new CsvHttpMessageConverter());
            converter.setSupportedMediaTypes(Collections.singletonList(MediaType.ALL));
            messageConverters.add(converter);

            restTemplate.setMessageConverters(messageConverters);

            // Prepare headers
            HttpHeaders headers = new HttpHeaders();
            headers.add("X-ACCESS-TOKEN", getAccessToken(_casinoAuth, _casinoAuth.getCasinoAuthId().toString()));
            headers.setContentType(MediaType.TEXT_PLAIN);

            // Ready to request.
            URI apiUrl = uriComponentsBuilder.queryParams(queryParams).build().expand(pathParams).toUri();
            HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
            ResponseEntity<List<Map<String, Object>>> responseEntity;
  • 我从这里收到该错误消息。

    responseEntity = restTemplate.exchange(apiUrl, httpMethod, requestEntity, new ParameterizedTypeReference<List<Map<String, Object>>>() { });

4

0 回答 0