[JAVA] RestTemplate Impossible d'extraire la réponse: aucun HttpMessageConverter approprié n'a été trouvé pour les contre-mesures de type de réponse

environnement

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
	</parent>

Statut

Je suis tombé sur une situation où une API REST a parfois un Content-Type de application / json ou application / octet-stream, mais elle renvoie toujours JSON. C'était. À ce stade, si le mappage de la réponse à l'objet Java est application / octat-stream, une erreur se produira comme indiqué ci-dessous.

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class asdf.springsample.SampleController$MyResponse] and content type [application/octet-stream]

Contre-mesures

Par défaut, le Spring Converter est mappé sur application / json, alors ajoutez aussi application / octet-stream à cela. Référence: [Impossible d'extraire la réponse: aucun HttpMessageConverter approprié trouvé pour le type de réponse](http://www.technicalkeeda.com/spring-tutorials/could-not-extract-response-no-suitable-httpmessageconverter-found-for-response] -type)

RestTemplate r = new RestTemplate();

MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM));
r.getMessageConverters().add(mappingJackson2HttpMessageConverter);

RequestEntity<String> request = RequestEntity.post(new URI("http://localhost:8080/a2")).accept(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM).body("");
ResponseEntity<MyResponse> response = r.exchange(request, MyResponse.class);

Ou, selon l'URL de référence, si vous mettez Apache HttpComponents HttpClient dans le chemin de classe et que vous l'utilisez, il semble que la méthode suivante soit également OK (je n'ai pas essayé cela).

ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(HttpClients.createDefault());
RestTemplate restTemplate = new RestTemplate(requestFactory);

Recommended Posts

RestTemplate Impossible d'extraire la réponse: aucun HttpMessageConverter approprié n'a été trouvé pour les contre-mesures de type de réponse
[Résolution d'erreur] HV000030: Aucun validateur n'a été trouvé pour la contrainte ~ ~