【发布时间】:2025-11-22 20:05:01
【问题描述】:
我在这里查看了不同的答案,它们都是关于在请求调用期间添加标头。我想在客户端配置中添加标头,然后将其注册到客户端本身。
我环顾四周,发现我可以创建自定义 ClientRequestFilter,但查看 add() 方法签名,我没有看到可以添加多个标头的任何内容 - 它们都像字符串一样作为第一个参数,然后像列表一样。
例如,我想添加这些标题:
Accept: 'something'
Client-ID: 'another something'
Authorization: 'OAuth more something'
我想出了下面的代码,但似乎只使用了第一个register() 方法调用。我检查了调试器,我看到的只是第一个 Accept 标头和 Jersey 添加的 User-Agent 标头。
public OAuth2Authenticator(String header, String value) {
this.header = header;
this.value = value;
}
@Override
public void filter(ClientRequestContext requestContext) throws IOException {
requestContext.getHeaders().add(header, value);
}
...
client = ClientBuilder.newClient(new ClientConfig());
client.register(new OAuth2Authenticator(HttpHeaders.ACCEPT, API_VERSION))
.register(new OAuth2Authenticator("Client-ID", clientId))
.register(new OAuth2Authenticator(HttpHeaders.AUTHORIZATION, "OAuth " + accessToken));
【问题讨论】:
标签: java http-headers jersey-2.0 jersey-client