【发布时间】:2018-01-22 01:57:58
【问题描述】:
在 Spring Boot 中,我正在尝试创建一个 RestTemplate,它将使用基本身份验证
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
builder.basicAuthorization("username", "password");
RestTemplate template = builder.build();
return template;
}
然后我将 RestTemplate 注入到我的服务类中
@Autowired
private RestTemplate restTemplate;
但是,我的请求因 401 未经授权的异常而失败:
Caused by: org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
使用另一个 REST 客户端(邮递员)对同一 URL 的请求成功,因此我认为基本身份验证无法正常工作。从调试输出看起来好像没有设置身份验证标头。什么会使这项工作发挥作用?
【问题讨论】:
-
去调试看看它是否正确设置了标题,我猜你的spring上下文中有更多的resttemplate。
-
spring 上下文中只有一个 RestTemplate。
-
分享您的客户端代码..您如何发送请求
-
问题在于您的配置,
basicAuthorization基本上是 newRestTemplateBuilder的工厂方法,但您没有使用新创建的实例。使用return builder.basicAuthorization("username", "password").build();而不是您现在拥有的(或重用新创建的实例)。
标签: spring rest spring-boot