我需要定时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/

10-12 00:29
查看更多