gpt4 book ai didi

使用 RestTemplateBuilder 的 Spring Boot RestTemplate 基本身份验证

转载 作者:行者123 更新时间:2023-12-03 09:53:07 26 4
gpt4 key购买 nike

在 Spring Boot 中,我正在尝试创建一个 RestTemplate ,它将使用基本身份验证

@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
builder.basicAuthorization("username", "password");
RestTemplate template = builder.build();
return template;
}

然后我在我的服务类中注入(inject) RestTemplate 作为
@Autowired
private RestTemplate restTemplate;

但是,我的请求因 401 未经授权的异常而失败:
Caused by: org.springframework.web.client.HttpClientErrorException: 401 Unauthorized

使用另一个 REST 客户端( postman )对同一 URL 的请求成功,因此我假设基本身份验证无法正常工作。从调试输出看起来好像没有设置身份验证 header 。什么将使这项工作?

最佳答案

问题是您使用的是 RestTemplateBuilder以错误的方式。 RestTemplateBuilder是不可变的。所以在做 builder.basicAuthorization("username", "password") 的时候你实际上得到了一个新实例,带有 BasicAuthorizationInterceptor添加和配置,RestTemplateBuilder . (这适用于 RestTemplateBuilder 的所有配置方法,它们都创建一个新复制的实例)。

但是,您的代码正在丢弃该专门配置的实例,并且您基本上使用的是非安全默认值 RestTemplateBuilder .

@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
builder.basicAuthorization("username", "password");
RestTemplate template = builder.build();
return template;
}

此代码应替换为类似的内容。
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.basicAuthorization("username", "password").build();
}

它将使用专门配置的实例。

关于使用 RestTemplateBuilder 的 Spring Boot RestTemplate 基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com