使用代理和重新安装客户端框架3.0.4时获取响应和原始请求

时间:2013-11-13 16:34:53

标签: jax-rs resteasy

// 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.Final或类似的解决方案感兴趣...

谢谢!

1 个答案:

答案 0 :(得分:1)

如果一切顺利(响应代码200),不确定如何获取它,但是如果服务器返回任何其他内容,则使用ClientErrorException的子类型,它允许您访问响应/状态代码/实体(消息体)等扔了。

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

     // Handle
}