gpt4 book ai didi

java - 有没有办法在请求之前和之后拦截 Jersey Client API?

转载 作者:行者123 更新时间:2023-11-30 03:20:47 25 4
gpt4 key购买 nike

我需要为 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 并像这样注入(inject)它: this.theClient.addFilter(new JerseyClientFilter);嘭!

如果您确实想了解这一点,请查看 Jersey“LoggingFilter”。那里有很多好东西...

关于java - 有没有办法在请求之前和之后拦截 Jersey Client API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31393374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com