Wir integrieren eine dritte Partei, die xml mit dem Content-Type-Header als text/html sendet. Wir haben geplant, Spring's RestTemplate zu verwenden, um es Klassen zuzuordnen, die wir aus xsds generiert haben, aber die RestTemplate findet keinen passenden Konverter für den Inhalt. Die dritte Partei lehnt es ab, den Inhaltstyp zu korrigieren, da dadurch die Integration anderer Partner unterbrochen wird.Force Spring RestTemplate zur Verwendung von XmlConverter
Gibt es eine Möglichkeit mit Spring's RestTemplate, einen bestimmten Konverter zu verwenden? Wir tun im Grunde nur folgende:
RestTemplate restTemplate = new RestTemplate();
XmlClass xmlClass = restTemplate.getForObject("http://example.com/", XmlClass.class);
Und die folgende Ausnahme erhalten:
org.springframework.web.client.RestClientException: Kann nicht Antwort extrahiert: keine geeigneten HttpMessageConverter für die Antwort gefunden Typ [XmlClass] und den Inhaltstyp [text/html; charset = ISO-8859-1] bei org.springframework.web.client.HttpMessageConverterExtractor.extractData (HttpMessageConverterExtractor.java:84)
Ich habe versucht, die Annahme-Header mit dem Interceptor zu ändern, um sie zu ermutigen, den richtigen Header zu verwenden, aber das hat nicht funktioniert. – Nathanial
Sicher hätte ich das auch versucht. Ich meine den Kopf der * Antwort *, nachdem die Antwort zurückkommt. – artbristol
Wir haben das Problem gelöst, indem wir der restTemplate einen zusätzlichen Nachrichtenkonverter hinzugefügt haben, der MediaType.TEXT_HTML akzeptiert. Es ist nicht ideal, da es einen redundanten Jaxb-Nachrichtenkonverter erstellt, aber es funktioniert - ich habe versucht, den Code in einer Antwort hinzuzufügen, aber es wird mich nicht lassen, da ich nicht die Rep haben. – Nathanial