У меня есть простой клиент, использующий RESTEasy следующим образом:
public class Test {
public static void main(String[] args) {
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target("http://localhost");
client.register(new MyMapper());
MyProxy proxy = target.proxy(MyProxy.class);
String r = proxy.getTest();
}
}
public interface MyProxy {
@GET
@Path("test")
String getTest();
}
@Provider
public class MyMapper implements ClientExceptionMapper<BadRequestException>{
@Override
public RuntimeException toException(BadRequestException arg0) {
// TODO Auto-generated method stub
System.out.println("mapped a bad request exception");
return null;
}
}
Сервер настроен на возврат 400 - Bad Request на http://localhost/test вместе с полезным сообщением. A BadRequestException выбрасывается ClientProxy. Помимо обертывания в try/catch, как я могу сделать getTest() улавливать исключение и возвращать полезное сообщение Response в виде строки. Я пробовал различные реализации ClientExceptionMapper, но просто может показаться, что все правильно. Вышеприведенный код никогда не вызывает toException. Что мне здесь не хватает?
В моей текущей работе используется ClientResponseFilter, а затем выполните setStatus(200) и введите исходный статус в объекте ответа. Таким образом я избегаю исключения.