// Some setup steps
ResteasyProviderFactory factory = new ResteasyProviderFactory();
factory.registerProvider(com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider.class);

Client client = ClientBuilder.newClient(new ClientConfiguration(factory));

WebTarget target = client.target(webappURL.toURI() + "api/v1");
resteasyWebTarget = (ResteasyWebTarget) target;


// the real request
MyApiController myApiController = resteasyWebTarget.proxy(MyApiController.class);
ClientResponse response = (ClientResponse) myApiController.doSomeStuff();


上面的代码很好用,但是我真的想知道当实际的HTTP请求和实际的HTTP响应发生什么情况时,


myApiController.doSomeStuff();


被执行。

我想知道最好的方法是捕获并记录“原始”请求以及捕获并记录“原始” http响应。我只对resteasy-client 3.0.2的解决方案感兴趣。

谢谢!

最佳答案

不知道如何在一切顺利的情况下获取它(响应代码200),但是如果服务器返回了其他任何内容,则会抛出ClientErrorException的子类型,该子类型使您可以访问响应/状态代码/实体(消息主体)等。

try {
    myApiController.doSomeStuff();
} catch (BadRequestException ce) {
    // Handle
} catch (ClientErrorException e) {
     MyErrorObject obj = ce.getResponse().readEntity(MyErrorObject.class);

     // Handle
}

10-08 18:07