Integrujemy się z firmą zewnętrzną, która wysyła xml z nagłówkiem typu treści jako text/html. Planowaliśmy użyć Spring's RestTemplate, aby odwzorować go na klasy, które wygenerowaliśmy z xsds, ale RestTemplate nie znajdzie odpowiedniego konwertera do użycia dla zawartości. Osoba trzecia odmawia naprawienia typu zawartości, ponieważ może to zepsuć integrację innego partnera.Wymuś Spring RestTemplate do użycia XmlConverter
Czy jest jakiś sposób na SpringTalk RestTemplate, aby zmusić go do użycia określonego konwertera? Jesteśmy w zasadzie tylko w następujący sposób:
RestTemplate restTemplate = new RestTemplate();
XmlClass xmlClass = restTemplate.getForObject("http://example.com/", XmlClass.class);
i uzyskać następujący wyjątek:
org.springframework.web.client.RestClientException: Nie można wyodrębnić odpowiedź: brak odpowiedniego HttpMessageConverter znaleziono odpowiedzi typ [XmlClass] i typ zawartości [text/html; charset = ISO-8859-1] w org.springframework.web.client.HttpMessageConverterExtractor.extractData (HttpMessageConverterExtractor.java:84)
Próbowałem zmienić nagłówek akceptacji za pomocą przechwytywacza, aby zachęcić ich do używania właściwego nagłówka, ale to nie zadziałało. – Nathanial
Oczywiście, też bym to wypróbował. Chodzi mi o skrzypienie nagłówka * response *, po tym jak odpowiedź wróci. – artbristol
Rozwiązaliśmy problem, dodając dodatkowy konwerter wiadomości do resztyTemplate, który akceptuje MediaType.TEXT_HTML. Nie jest idealny, ponieważ tworzy nadmiarowy konwerter wiadomości jaxb, ale działa - próbowałem dodać kod w odpowiedzi, ale nie pozwala mi, ponieważ nie mam przedstawiciela. – Nathanial