Java Jersey客户端(2.x)不发送我的GET请求头

Java Jersey客户端(2.x)不发送我的GET请求头,java,rest,jersey-2.0,jersey-client,Java,Rest,Jersey 2.0,Jersey Client,我已经调试了三个小时,我仍然无法解释为什么我的自定义头(通过客户端请求过滤器注册)没有被发送 客户端的配置如下(完整源): 过滤器如下所示: public class VidalRequestFilter implements ClientRequestFilter { private final ApiCredentials credentials; public VidalRequestFilter(ApiCredentials credentials) {

我已经调试了三个小时,我仍然无法解释为什么我的自定义头(通过客户端请求过滤器注册)没有被发送

客户端的配置如下(完整源):

过滤器如下所示:

public class VidalRequestFilter implements ClientRequestFilter {

    private final ApiCredentials credentials;

    public VidalRequestFilter(ApiCredentials credentials) {
        this.credentials = credentials;
    }

    @Override
    public void filter(ClientRequestContext requestContext) throws IOException {
        MultivaluedMap<String, Object> headers = requestContext.getHeaders();
        headers.add(ACCEPT, APPLICATION_ATOM_XML_TYPE);
        headers.add("app_id", credentials.getApplicationId());
        headers.add("app_key", credentials.getApplicationKey());
    }
}
我得到的全部是403禁止,因为我正在调用的特定端点受到保护(使用上面定义的自定义头执行身份验证)

最奇怪的是,当我调试时,我看到
sun.net.www.MessageHeader
在请求写入期间被正确调用(即实例的值如下:
sun.net.www)。MessageHeader@14f9390f7成对:{GET/rest/api/packages HTTP/1.1:null}{Accept:application/atom+xml}{app_id:XXX}{app_key:YYY}{用户代理:Jersey/2.22.1(HttpUrlConnection 1.8.0_45)}{主机:ZZZ}{连接:保持活动状态}

但是,我已经确认,无论是我们的API服务器,还是它的反向代理,都没有收到带有所需的auth头的GET请求(尽管第一个头请求似乎还可以)

我确信凭证是好的,因为等效的curl命令可以正常工作

在定义调用时,我尝试了直接设置头的简单方法,但没有成功


我遗漏了什么?

标题正在顺利通过。我正在通过Fiddler代理,可以看到所有的标题都在那里。那么,我将在服务器端进行一些调查。感谢您的测试。我在本地服务器上进行了测试,并且正确发送了标题。这似乎与另一个基础架构问题有关。我想我现在就结束这个问题。下面是标题正在顺利通过。我正在通过Fiddler代理,可以看到所有的标题都在那里。那么,我将在服务器端进行一些调查。感谢您的测试。我在本地服务器上进行了测试,并且正确发送了标题。这似乎与另一个基础架构问题有关。我想我现在结束这个问题。
public class VidalRequestFilter implements ClientRequestFilter {

    private final ApiCredentials credentials;

    public VidalRequestFilter(ApiCredentials credentials) {
        this.credentials = credentials;
    }

    @Override
    public void filter(ClientRequestContext requestContext) throws IOException {
        MultivaluedMap<String, Object> headers = requestContext.getHeaders();
        headers.add(ACCEPT, APPLICATION_ATOM_XML_TYPE);
        headers.add("app_id", credentials.getApplicationId());
        headers.add("app_key", credentials.getApplicationKey());
    }
}
String response = webTarget
    .path("api/packages")
    .request()
    .get()
    .readEntity(String.class);