【问题标题】:How to specify Restlet customer HTTP header with key as "Authorization"如何指定 Restlet 客户 HTTP 标头,密钥为“授权”
【发布时间】:2016-02-07 17:50:27
【问题描述】:

我正在使用 Restlet2.3 运行 REST API 测试自动化。

新功能有一个客户 HTTP 标头,用于将令牌传递给服务。

Form headers = (Form)resource.getRequestAttributes().get("org.restlet.http.headers");
if (headers == null) {
    headers = new Form();
    resource.getRequestAttributes().put("org.restlet.http.headers", headers);
}           

...

headers.add(key, value);

代码有效。现在,客户 HTTP 标头被定义为“授权”。上面的代码似乎没有正确传递标题。而这不涉及challengeScheme。

我在 SoapUI 和 Postman 上测试了这个场景。两者都有效。

有人知道restlet支持这个吗?

【问题讨论】:

  • ... headers.add(key, value) .. 是代码的一部分。

标签: restlet


【解决方案1】:

实际上,在执行请求时,您不能使用 Restlet 覆盖 Authorization 之类的标准标头。

如果您想提供安全令牌,您可以使用这种方法:

String pAccessToken = "some token";
ChallengeResponse challengeResponse = new ChallengeResponse(
                      new ChallengeScheme("", ""));
challengeResponse.setRawValue(pAccessToken);
clientResource.setChallengeResponse(challengeResponse);

这样您将只有Authorization 标头中的标记(开头有一个空格 - 所以不要忘记修剪值)。

【讨论】:

  • 谢谢蒂埃里,我想我通过使用这种方法取得了进步。服务接收到授权令牌作为集合。我认为格式是“Authorizationtoken,它不是预期的。我在这一行遇到错误:slurper.parseText(resource.post(rep).getText())。第二个空格是被删除。我怎样才能在资源中修剪它?
  • 实际上格式为Authorization: token。标题值中会有额外的空间...我不确定slurper.parseText(resource.post(rep).getText()) 是什么以及它发生在哪里;-) 请随时提供更多详细信息!
  • 我想知道在哪里删除资源内的额外空间。
猜你喜欢
  • 1970-01-01
  • 2019-09-21
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 2017-08-31
  • 2022-11-06
  • 2013-09-04
相关资源
最近更新 更多