【问题标题】:JAX-RS Client Filter to Modify Header Before Request is Dispatched to serverJAX-RS 客户端过滤器在请求分派到服务器之前修改标头
【发布时间】:2016-05-25 06:32:21
【问题描述】:

在 JAX-RS (RestEasy) 中,我想实现一个客户端过滤器,在发送请求之前修改标头,因此我不会为每个调用手动执行此操作。

目前我在接收端这样做是为了在到达资源之前拦截请求。

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

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

        // read header
    }

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

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

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

【问题讨论】:

  • @peeskillet 是的,过滤器在接收端调用资源方法之前被调用。但是我想在发送请求之前在发送点实现一个类似的过滤器!请参阅卢卡的回答。
  • @peeskillet 抱歉,我想问题的最后一部分不清楚我的意思是客户端(发送端)。无论如何谢谢:)

标签: jax-rs resteasy


【解决方案1】:

您必须将ClientRequestFilter 注册到您的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() 
    }
}  

【讨论】:

    猜你喜欢
    • 2021-06-09
    • 1970-01-01
    • 2023-04-01
    • 2013-06-03
    • 1970-01-01
    • 2019-10-07
    • 2023-04-04
    • 2018-12-28
    • 2016-01-06
    相关资源
    最近更新 更多