Я получаю следующее исключение при попытке получить объект из моего веб-сервиса:javax.xml.bind.UnmarshalException: неожиданный элемент (URI: "", местные: "HTML")
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"html"). Expected elements are <{}user>
класс пользователя помечается @XmlRootElement
, доступ к веб-сервиса через браузер отображает XML-представление пользователя
код клиента (я использую MediaType.TEXT_HTML
потому MediaType.APPLICATION_XML
причиной RestClientException
):
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
Jaxb2RootElementHttpMessageConverter jaxbMessageConverter = new Jaxb2RootElementHttpMessageConverter();
List<MediaType> mediaTypes = new ArrayList<MediaType>();
mediaTypes.add(MediaType.TEXT_HTML);
jaxbMessageConverter.setSupportedMediaTypes(mediaTypes);
messageConverters.add(jaxbMessageConverter);
restTemplate.setMessageConverters(messageConverters);
User x = restTemplate.getForObject("http://localhost:8080/Online_Shopping/dispatcher/rest/hello",User.class);
Web Сервис-код:
@Controller
@RequestMapping(value = "/rest")
public class RESTController {
@RequestMapping(value = "/hello",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_XML_VALUE)
public @ResponseBody User getUser() {
return new User("paymon","123",true);
}
}
Можете ли вы предоставить более подробную информацию о RestClientException, которое вы получаете с приложением/xml? Я заметил, что вы не передаете заголовок Accept. Поэтому, если вы получаете 406 недопустимых; отсутствие заголовка Accept является причиной –
org.springframework.web.client.RestClientException: не удалось извлечь ответ: нет подходящего HttpMessageConverter для типа ответа [class com.shopping.model.User] и типа содержимого [text/html; charset = ISO-8859-1] –
Paymon, можете ли вы добавить это: 'mediaTypes.add (MediaType.APPLICATION_XML_VALUE);' в свой код RestTemplate и предоставить мне RestClientException, которое вы сейчас получаете? –