je reçois l'exception suivante lorsque je tente de faire l'objet de mon service web:javax.xml.bind.UnmarshalException: élément inattendu (uri: "", local: "html")
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"html"). Expected elements are <{}user>
Une classe d'utilisateur est annotées avec @XmlRootElement
, l'accès au service Web via le navigateur affiche la représentation XML de l'utilisateur
code client (j'utilise MediaType.TEXT_HTML
parce que la cause 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);
Code Web Service:
@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);
}
}
Pouvez-vous fournir plus de détails sur l'exception RestClientException que vous obtenez avec application/xml? Je remarque que vous ne passez pas Accept header. Donc, si vous obtenez un 406 non acceptable; l'absence de l'en-tête Accept est la raison –
org.springframework.web.client.RestClientException: Impossible d'extraire la réponse: aucun HttpMessageConverter trouvé pour le type de réponse [class com.shopping.model.User] et le type de contenu [text/html; charset = ISO-8859-1] –
Paymon, Pouvez-vous vous assurer que vous ajoutez ceci: 'mediaTypes.add (MediaType.APPLICATION_XML_VALUE);' dans votre code RestTemplate et me donnez le RestClientException que vous obtenez maintenant? –