使用 spring restTemplate 对 REST API 进行基本身份验证

新手上路,请多包涵

我是 RestTemplate 的新手,基本上也是 REST API 的新手。我想通过 Jira REST API 在我的应用程序中检索一些数据,但返回 401 Unauthorised。找到了关于 jira rest api 文档 的文章,但真的不知道如何将其重写为 java,因为该示例使用带有 curl 的命令行方式。我将不胜感激如何重写的任何建议或建议:

 curl -D- -X GET -H "Authorization: Basic ZnJlZDpmcmVk" -H "Content-Type: application/json" "http://kelpie9:8081/rest/api/2/issue/QA-31"

使用 spring rest 模板进入 java。其中 ZnJlZDpmcmVk 是用户名:密码的 base64 编码字符串。非常感谢。

原文由 shippi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 929
2 个回答

取自 本网站上的示例,我认为这是最自然的做法,即填写标头值并将标头传递给模板。

这是为了填写标题 Authorization

 String plainCreds = "willie:p@ssword";
byte[] plainCredsBytes = plainCreds.getBytes();
byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
String base64Creds = new String(base64CredsBytes);

HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Creds);

这是将标头传递给 REST 模板:

 HttpEntity<String> request = new HttpEntity<String>(headers);
ResponseEntity<Account> response = restTemplate.exchange(url, HttpMethod.GET, request, Account.class);
Account account = response.getBody();

原文由 Angular University 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 spring-boot RestTemplateBuilder

 @Bean
RestOperations rest(RestTemplateBuilder restTemplateBuilder) {
    return restTemplateBuilder.basicAuthentication("user", "password").build();
}

请参阅 文档

(在 SB 2.1.0 之前是 #basicAuthorization

原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题