我有一个OAuth2RestTemplate
来处理与REST-API的通信,只是尝试将其与Traverson
结合使用,就像这样:
@Bean
public Traverson traverson( final OAuth2RestTemplate restTemplate ) {
try {
final Traverson traverson = new Traverson( new URI( this.baseUrl ), MediaType.APPLICATION_JSON );
traverson.setRestOperations( restTemplate );
return traverson;
}
catch ( final URISyntaxException e ) {
throw new BeanCreationException( e );
}
}
现在尝试使用traverson
时,模板可以很好地处理OAuth2舞蹈,获取令牌和所有令牌-不幸的是,{{1}不会发送标头Authorization: Bearer ...
}。
所以当我现在呼叫一个端点时,例如traverson
的结果只是REST API提供程序的登录形式:-(
我的问题:
我是否缺少某些东西?或者我的“带有Traverson的OAuth2RestTemplate”方法根本不被支持,或者traverson.follow( "xyz" )...
打算以这种方式使用?
任何帮助表示赞赏!目前,我只能说这是不可能的,但是在这个“春季世界”中,大多数时间都有 方法来完成它-也许你们当中的一个人知道怎么做!
答案 0 :(得分:0)
我认为您需要设置Traverson中预定义的HAL消息转换器。
restTemplate.setMessageConverters(Traverson.getDefaultMessageConverters(mediaTypes));
在我的情况下,我使用Traverson的扩展来成功使用OAuth2 RestTemplate。
public class ExtendedTraverson extends Traverson {
public ExtendedTraverson(URI baseUri, RestTemplate restTemplate, List<MediaType> mediaTypes) {
super(baseUri, mediaTypes);
restTemplate.setMessageConverters(getDefaultMessageConverters(mediaTypes));
setRestOperations(restTemplate);
}
}