Olá,
Gostaria de saber em que situações pode acontecer essa Exception (RestClientException)? Estou passando por isso no projeto que estou e não sei ao certo o que pode ser.
Olá,
Gostaria de saber em que situações pode acontecer essa Exception (RestClientException)? Estou passando por isso no projeto que estou e não sei ao certo o que pode ser.
Já chegou a ver a documentação?
nela diz o seguinte: Base class for exceptions thrown by RestTemplate whenever it encounters client-side HTTP errors.
Ou seja: Classe base para exceções lançadas por RestTemplate sempre que encontrar erros HTTP do lado do cliente.
Segue documentação:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestClientException.html
Já vi sim, a mensagem que ele me dá é essa:
org.springframework.web.client.RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [com.everis.eva.model.access.watson.WatsonRequest] and content type [application/json]
Me parece que ele não está conseguindo converter a minha model para json.
Estou tentando ver o porquê disso. Já passou por algo parecido?
Não que eu me recorde, mas o erro me parece por ser algo relacionado ao content type, você está trabalhando com Jackson para manipular os JSON?
Tenta verificar se está aplicando o contet type corretamente.
Não. Mas consegui resolver, era que o RestTemplate não estava conseguindo transformar meu objeto em json, então eu transformei ele em json antes de passar para o método exchange:
//Transforma VendaRequest em uma string json
Gson gson = new Gson();
String jsonRequest = gson.toJson(vendaRequest);
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Creds);
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<String> requestEntity = new HttpEntity<>(jsonRequest, headers);
ResponseEntity<VendaResponse> responseEntity = this.restTemplate.exchange(url, HttpMethod.POST, requestEntity, VendaResponse.class);