Jersey 2.x 添加多个 headers 到 ClientConfig
Jersey 2.x add multiple headers to ClientConfig
我在这里查看了不同的答案,它们都是关于在请求调用期间添加 header(s) 的。我想在客户端配置中添加 headers 然后在客户端本身注册它。
我环顾四周,发现我可以创建一个自定义 ClientRequestFilter,但是查看 add()
方法签名,我没有看到其中的任何内容我可以添加多个 headers - 它们都像字符串一样作为第一个参数,然后像列表一样。
例如,我想添加这些header:
Accept: 'something'
Client-ID: 'another something'
Authorization: 'OAuth more something'
我想出了下面的代码,但似乎只实际使用了第一个 register()
方法调用。我检查了调试器,我看到的只是第一个 Accept header 和 Jersey 添加的 User-Agent header。
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));
我相信你能做到:
client.target("")
.request()
.header("Accept","something")
.header("Client-ID", "another something");
我能够通过先分配给 MultivalueMap,然后调用 add()
.
来让它工作
MultivaluedMap<String, Object> headers = requestContext.getHeaders();
headers.add(HttpHeaders.ACCEPT, "something");
headers.add("Client-ID", another something);
headers.add(HttpHeaders.AUTHORIZATION, "OAuth more something");
...
client = ClientBuilder.newClient(new ClientConfig());
client.register(new OAuth2Authenticator( API_VERSION, clientId, accessToken));
我在这里查看了不同的答案,它们都是关于在请求调用期间添加 header(s) 的。我想在客户端配置中添加 headers 然后在客户端本身注册它。
我环顾四周,发现我可以创建一个自定义 ClientRequestFilter,但是查看 add()
方法签名,我没有看到其中的任何内容我可以添加多个 headers - 它们都像字符串一样作为第一个参数,然后像列表一样。
例如,我想添加这些header:
Accept: 'something'
Client-ID: 'another something'
Authorization: 'OAuth more something'
我想出了下面的代码,但似乎只实际使用了第一个 register()
方法调用。我检查了调试器,我看到的只是第一个 Accept header 和 Jersey 添加的 User-Agent header。
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));
我相信你能做到:
client.target("")
.request()
.header("Accept","something")
.header("Client-ID", "another something");
我能够通过先分配给 MultivalueMap,然后调用 add()
.
MultivaluedMap<String, Object> headers = requestContext.getHeaders();
headers.add(HttpHeaders.ACCEPT, "something");
headers.add("Client-ID", another something);
headers.add(HttpHeaders.AUTHORIZATION, "OAuth more something");
...
client = ClientBuilder.newClient(new ClientConfig());
client.register(new OAuth2Authenticator( API_VERSION, clientId, accessToken));