我通过以下方式使用 Jersey 客户端 API:-
User user = webRsrc.accept(MediaType.APPLICATION_XML).post(User.class, usr);
所以我期待用户类对象的响应,它是一个 JAXB 注释类。但是,有时我也可能会收到一个错误 xml,为此我创建了一个 JAXB 类 ErrorResponse。
现在的问题是,如果我的请求返回一个 ErrorResponse 对象而不是 User 我该如何处理呢?
我试过这样 -
ClientResponse response=null;
try {
response = webRsrc.accept(MediaType.APPLICATION_XML).post(ClientResponse.class,usr);
User usr = response.getEntity(User.class);
}catch(Exception exp)
{
ErrorResponse err = response.getEntity(ErrorResponse.class);
}
但是当我尝试在 catch 块中使用 getEntity() 时,它会引发以下异常
[org.xml.sax.SAXParseException: Premature end of file.]
at com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.readFrom(AbstractRootElementProvider.java:107)
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:532)
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:491) .....
似乎在调用一次 getEntity() 之后,输入流已经耗尽。