当前位置: 首页 > 知识库问答 >
问题:

UnMarshalException:意外元素(URI:“”,本地:“HTML”)

贡光明
2023-03-14

当我试图从web服务获取对象时,会出现以下异常:

 javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"html"). Expected elements are <{}user>

User类使用@XMLRootElement进行注释,通过浏览器访问web服务将显示User的xml表示形式

客户端代码(我使用mediatype.text_html是因为mediatype.application_xml导致RestClientException):

java prettyprint-override">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); 
    }
}

共有1个答案

徐新荣
2023-03-14

由于安全拦截器,我没有访问web服务的权限。 注释掉拦截器后,我的web服务可以正常工作。唯一的问题是我想知道如何保护我的web服务通过java代码访问它。

 类似资料: