1.Summarize the problem
I am trying to read comma separated values(CSV formatted data, not csv file) into responseEntity(ResponseEntity<List<Map<String, Object>>> responseEntity) using RestTemplate.
but, I get error below.
org.springframework.web.client.RestClientException: Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [text/csv;charset=utf-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of java.util.ArrayList
out of VALUE_STRING token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.ArrayList
out of VALUE_STRING token
at [Source: (PushbackInputStream); line: 1, column: 1]
2.Describe what you’ve tried
: I've tried with some Messageconverters.
and from here https://www.logicbig.com/tutorials/spring-framework/spring-web-mvc/csv-msg-converter.html I've got some useful informations there and used some. but I've kept getting the same error.
3.When appropriate, show some code
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;
I get that error message from here.
responseEntity = restTemplate.exchange(apiUrl, httpMethod, requestEntity, new ParameterizedTypeReference<List<Map<String, Object>>>() { });