当前位置: 首页 > 知识库问答 >
问题:

泽西2. x向ClientConfig添加多个标头

麻书
2023-03-14

我在这里看到了不同的答案,它们都是关于在请求调用期间添加头的。我想在客户机配置中添加标题,然后将其注册到客户机本身。

我环顾四周,发现我可以创建一个自定义ClientRequestFilter,但看看add()方法签名,我看不到任何可以添加多个标题的方法-它们都像字符串一样作为第一个参数,然后像列表一样。

例如,我想添加以下标题:

Accept: 'something'
Client-ID: 'another something'
Authorization: 'OAuth more something'

我想出了下面的代码,但实际上似乎只使用了第一个寄存器()方法调用。我检查了调试器,所有我看到的是第一个接受标头和泽西添加的用户代理标头。

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));

共有2个答案

云文栋
2023-03-14

我可以通过先分配给一个多值映射,然后调用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));
束作人
2023-03-14

我相信你能做到:

client.target("")
             .request()
             .header("Accept","something")
             .header("Client-ID", "another something");
 类似资料:
  • 编辑:这是ackson jaxrs-base早期版本中的一个问题,已在jackson-jaxrs-base-2.8中解决。https://github.com/FasterXML/jackson-jaxrs-providers/issues/22 我正在努力解决这个问题,只有mapper例外。我想映射com的所有子级。fasterxml。杰克逊。果心JsonProcessingException在

  • 我将javax和jersey用于我的api应用程序(公开apiendpoint),我试图通过提供一个实现ExceptionMapper的提供者来捕获来自fasterXml的异常(在put和post调用时)。 我的问题是,在POST或PUT上,每当我发送错误的属性名称时,有时我的映射器会捕获异常,有时则不会。例如: > 运行我的应用程序一次- 再次运行我的应用程序(重启)- 我正在使用球衣2。x、

  • 有人成功部署了Jersey 2吗。带JBoss 7的x。x?我曾尝试在JBoss 7.1.1中部署Jersey 2.5,但遇到以下错误: 我认为这个问题是因为JBoss与RestEasy捆绑在一起,RestEasy是一个JAX-RS 1.0实现,而Jersey是一个JAX-RS 2.0实现。因此,我采取以下步骤禁用RestEasy: 1)在我的web.xml中添加了以下内容: 2)按照这里的讨论,

  • 我有一个问题,让昂首阔步的博士一代工作。 以下是我使用的专家: 我在ResourceConfig类中添加了swagger ressources: 然后我声明了一个 servlet 来配置 Swagger: 通过上面的配置,可以使用swagger servlet:如果我浏览到api文档url,我会得到以下信息: 但是,如果我使用如下所示的真实配置更改 swagger servlet 配置中的 api

  • 请在下面找到球衣客户代码以上传多部分文件: 我需要添加字符串fileContentLength和thumbnailContentLength作为标题内容长度。我如何将标题添加为multipart的一部分并提交请求?任何帮助都将不胜感激

  • 问题内容: 我正在尝试编写一个使用Jersey客户端API访问RESTful Web服务的库。该服务需要设置cookie的登录请求,然后后续请求必须将该cookie设置为成功。登录请求按预期方式工作,我能够从登录响应中检索cookie,但似乎无法在后续请求中重新添加cookie。谁能说出我可能做错了什么。这是发出请求的代码: 当请求没有失败时,服务将以应用程序错误“ No Session”进行响应