1

我正在使用泽西客户端。

Client client = Client.create();
client.addFilter(new Myfilter());
// do some other things

和 Myfilter 类

public class Myfilter extends ClientFilter {

    public ClientResponse handle(ClientRequest cr) {
         System.out.println("called");
         ClientResponse resp = getNext().handle(cr);
         return resp;
    }
}

我无法调用 Myfilter 的句柄方法。有人可以帮我解决这个问题吗?

4

2 回答 2

2

这是一个简单的示例(使用 jersey-client 版本 1.x),它导致将“调用”打印到控制台:

import com.sun.jersey.api.client.*;
import com.sun.jersey.api.client.filter.ClientFilter;

public class JerseyClientFilterExample {
    public static void main(String[] args) {
        Client client = Client.create();
        client.addFilter(new MyClientFilter());
        client.resource("http://google.com").get(ClientResponse.class);
    }
}

class MyClientFilter extends ClientFilter {
    @Override
    public ClientResponse handle(ClientRequest cr) throws ClientHandlerException {
        System.out.println("called");
        return getNext().handle(cr);
    }
}
于 2013-08-06T06:53:19.603 回答
2

本文介绍了如何为 jersey 客户端添加过滤器

希望能帮助到你

PS:如果您忘记将其添加到您的 web.xml

<init-param>
  <param-name>your.package.ClientFilter</param-name >
</init-param>

例子

@Override
    public ClientResponse handle(ClientRequest request) throws ClientHandlerException {
        request.getHeaders().putSingle(HttpHeaders.CONTENT_TYPE, "application/json");
        return getNext().handle(request);
    }
于 2013-01-17T11:18:03.233 回答