[JAVA] RestTemplate Antwort konnte nicht extrahiert werden: Es wurde kein geeigneter HttpMessageConverter für Gegenmaßnahmen vom Antworttyp gefunden

Umgebung

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

Status

Ich stoße auf eine Situation, in der eine REST-API manchmal den Inhaltstyp `` application / json``` oder `application / octet-stream``` hat, aber dennoch JSON zurückgibt. Es war. Wenn zu diesem Zeitpunkt die Zuordnung der Antwort zum Java-Objekt "application / octat-stream" lautet, tritt ein Fehler auf, wie unten gezeigt.

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]

Gegenmaßnahmen

Standardmäßig wird der Federkonverter zugeordnet, wenn `application / json```. Fügen Sie also auch` application / octat-stream``` hinzu. Referenz: [Antwort konnte nicht extrahiert werden: Es wurde kein geeigneter HttpMessageConverter für den Antworttyp gefunden](http://www.technicalkeeda.com/spring-tutorials/could-not-extract-response-no-suitable-httpmessageconverter-found-for-response] -Art)

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);

Wenn Sie laut Referenz-URL Apache HttpComponents HttpClient in den Klassenpfad einfügen und diesen verwenden, scheint die folgende Methode ebenfalls in Ordnung zu sein (ich habe dies tatsächlich nicht versucht).

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

Recommended Posts

RestTemplate Antwort konnte nicht extrahiert werden: Es wurde kein geeigneter HttpMessageConverter für Gegenmaßnahmen vom Antworttyp gefunden
[Fehlerbehebung] HV000030: Für die Einschränkung ~ ~ konnte kein Validator gefunden werden