Я использую Jersey Client API следующим образом: -
User user = webRsrc.accept(MediaType.APPLICATION_XML).post(User.class, usr);
Итак, я ожидаю ответа в объекте класса User, который является аннотированным классом 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);
}
Но когда я пытаюсь использовать getEntity () в блоке catch, выдается следующее исключение
[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 () входной поток исчерпан.