我需要定时Jersey客户端(v1.17)。我看到我可以使用过滤器来获取请求,但不能调用结束(响应)。
可以吗
最佳答案
明白了,它变得如此容易...
public class JerseyClientFilter extends ClientFilter {
@Override
public ClientResponse handle(ClientRequest request) {
long startTime = System.currentTimeMillis();
// execute call...
ClientResponse response = getNext().handle(request);
// build log...
StringBuilder sb = new StringBuilder();
sb.append("HTTP:").append(response.getStatus());
sb.append(" - Time:[").append(System.currentTimeMillis() - startTime).append("ms]");
sb.append(" - User:").append(this.findLogon(request));
sb.append(" - Path:").append(request.getURI());
sb.append(" - Content-type:").append(request.getHeaders().get(HttpHeaders.CONTENT_TYPE));
sb.append(" - Accept:").append(request.getHeaders().get(HttpHeaders.ACCEPT));
sb.append(" - RequestBody:").append(request.getEntity() != null ? request.getEntity().toString() : "none");
sb.append(" - ResponseBody:").append(this.logResponse(response));
new TmaticwsInfoEvent(TmaticwsConstants.LOG_OUTBOUND_REST, this, request.getMethod(), sb.toString());
return response;
}
因此,您实质上扩展了ClientFilter并像这样注入它:this.theClient.addFilter(new JerseyClientFilter); am!
如果您真的想了解这一点,请查看Jersey“ LoggingFilter”。那里有很多好东西...
关于java - 有没有一种方法可以在请求之前和之后拦截Jersey客户API?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31393374/