JAX-RS 客户端过滤器修改 Header 在请求被发送到服务器之前

JAX-RS Client Filter to Modify Header Before Request is Dispatched to server

在 JAX-RS (RestEasy) 中,我想实现一个在发送请求之前修改 header 的客户端过滤器,这样我就不会在每次调用时都手动执行此操作。

目前我正在接收端执行此操作以在到达资源之前拦截请求。

@Provider
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter {

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {

        // read header
    }

现在我知道了(如果我错了请纠正我):

在接收端,可以在请求到达资源之前使用ContainerRequestFilter获取请求。

但是我想在客户端实现这个,在请求发送到服务器之前修改 header。是否可以使用相同的服务器过滤器或客户端类似的东西?

您必须注册一个ClientRequestFilter into your Client

Client client = ClientBuilder.newClient().register(MyFilter.class);

@Provider
public class MyFilter implements ClientRequestFilter {

    @Override
    public void filter(ClientRequestContext ctx) throws IOException {
        // modify header before send: ctx.getHeaders() 
    }
}