1

I'm having issues uploading a file via resttemplate client on linux

Here's what I have currently

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.MULTIPART_FORM_DATA);
    MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
    form.add("image", new FileSystemResource(imageFile));
    HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(form, headers);
    UploadResponse response = restTemplate.postForEntity(uploadUrl,httpEntity, UploadResponse.class).getBody();

Code works fine on windows but returns this error on linux:

 I/O error on POST request for "https://baseurl/api/v1/upload": Illegal unquoted character ((CTRL-CHAR, code 13)): has to be escaped using backslash to be included in string value
 at [Source: (StringReader); line: 1, column: 47]; nested exception is com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 13)): has to be escaped using backslash to be included in string value

Anyone has an idea what might be wrong?

1 Answers1

0

The solution to this seems to be to update your ObjectMapper to ignore CTRL characters, which Linux might be inferring

@Autowired
private ObjectMapper objectMapper;

@Autowired
private RestTemplate restTemplate;

private void patchRestTemplate() {

    objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

    restTemplate.getMessageConverters().forEach(httpMessageConverter -> {

        if (httpMessageConverter instanceof MappingJackson2HttpMessageConverter) {

            ((MappingJackson2HttpMessageConverter) httpMessageConverter).setObjectMapper(objectMapper);
        }
    });
}

Reference: JsonParseException : Illegal unquoted character ((CTRL-CHAR, code 10)

JCompetence
  • 6,997
  • 3
  • 19
  • 26