需要使用拦截器将自定义HTTP请求标头添加到JAX-RS客户端

时间:2012-09-20 23:59:08

标签: java cxf jax-rs

我正在使用JAX-RS 1.0。在处理请求之前,服务器会验证是否存在自定义HTTP标头。

我想为JAX-RS客户端做一些类似AOP的行为,它会自动为每个请求添加HTTP标头。

JAX-RS 1.0是否支持出站客户端拦截器?我在文档中找不到任何提及它。另一种方法是我编写一个特定于CXF的出站拦截器......谢谢!

3 个答案:

答案 0 :(得分:1)

使用JAX-RS 1.0无法做到这一点。我使用了CXF拦截器。

答案 1 :(得分:1)

您可以编写@PreMatching拦截器

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.PreMatching;
import java.io.IOException;

@PreMatching
public class ContentTypeFilter implements ContainerRequestFilter {

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

        requestContext.getHeaders().putSingle("Content-Type", "application/json");
    }
}

答案 2 :(得分:0)

嗯,JAX-RS是一个API,因此应该能够为它提供自己的实现。如何实施javax.ws.rs.client.ClientFactory,并从javax.ws.rs.client.Client返回预先配置的getClient()。只要您的类与您正在使用的JAX-RS实现没有冲突,就可以正常工作。