有没有办法在请求前后拦截 Jersey Client API?
Is there a way to intercept the Jersey Client API both before and after the request?
我需要为 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);砰!
如果您真的想了解这一点,请查看球衣 "LoggingFilter"。那里有很多好东西...
我需要为 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);砰!
如果您真的想了解这一点,请查看球衣 "LoggingFilter"。那里有很多好东西...