Java 如何为客户端筛选器调用类扩展ClientRequestFilter

Java 如何为客户端筛选器调用类扩展ClientRequestFilter,java,rest,filter,jersey,jax-ws,Java,Rest,Filter,Jersey,Jax Ws,我有一个类,它为客户端过滤实现ClientRequestFilter import java.io.IOException; import javax.ws.rs.client.ClientRequestContext; import javax.ws.rs.ext.Provider; import javax.ws.rs.client.ClientRequestFilter; import org.glassfish.jersey.server.ContainerRequest; @P

我有一个类,它为客户端过滤实现ClientRequestFilter

import java.io.IOException;

import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.ext.Provider;

import javax.ws.rs.client.ClientRequestFilter;

import org.glassfish.jersey.server.ContainerRequest;

@Provider
public class checkRequestFilter implements ClientRequestFilter{

    @Override
    public void filter(ClientRequestContext clientRequestContext) throws IOException {
        System.out.println("I am in checkResponseFilter");
    }
}
但我不知道该怎么做才能调用此筛选器


我们需要在web.xml中添加某种servlet吗?

ClientRequestFilter在客户端起作用。因此,您不必将其添加到servlet,而是添加到客户机(假设您使用的是Jersey客户机API)

构建客户机时,您可以执行以下操作:

Client client = ClientBuilder.newClient();
client.register(new CheckRequestFilter()); // your filter
// more filters
WebTarget target = client.target(....
您可以在这里找到一个关于身份验证支持的好例子: 这个在过滤器上


如果要在服务器端使用筛选器,则需要使用ContainerRequestFilter。

客户端使用ClientRequestFilter。因此,您不必将其添加到servlet,而是添加到客户机(假设您使用的是Jersey客户机API)

构建客户机时,您可以执行以下操作:

Client client = ClientBuilder.newClient();
client.register(new CheckRequestFilter()); // your filter
// more filters
WebTarget target = client.target(....
您可以在这里找到一个关于身份验证支持的好例子: 这个在过滤器上


如果要在服务器端使用筛选器,则需要使用ContainerRequestFilter。

另一个选项:

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;

cb = ClientBuilder.newBuilder();
client = cb.register(new checkRequestFilter()).build();

还请注意,这是一个客户端筛选器,因此您试图筛选发送的请求(而不是响应)(因此您在客户端注册了筛选器)。

另一个选项:

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;

cb = ClientBuilder.newBuilder();
client = cb.register(new checkRequestFilter()).build();

还请注意,这是一个客户端筛选器,因此您试图筛选您发送的请求(而不是响应)(因此您在客户端注册了筛选器)。

断开链接,但我发现了以下示例:我在ClientBuilder或客户端上看到了此注册。它在两个地方都有效吗?是的@Wheezil,我猜你的意思是像这里一样:断开的链接,但我发现了这个例子:我已经在ClientBuilder或客户端上看到了这个注册。在这两个地方都有效吗?是的,我想你的意思是像在这里: