0

我有一个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 );
   }
}

当尝试使用traversonnow 时,模板可以很好地处理 OAuth2 舞蹈,获取令牌和所有内容 - 但Authorization: Bearer ...不幸的是,标头不会由traverson.

所以当我现在调用一个端点时,例如traverson.follow( "xyz" )...结果只是 REST API 提供者的登录表单:-(

我的问题:我是否遗漏了某些东西,或者我的“OAuth2RestTemplate with Traverson”方法根本不受支持或traverson打算以这种方式使用?

任何帮助表示赞赏!目前我想说这根本不可能,但在这个“春天的世界”中,大多数时候都有办法完成它——也许你们中的一个人知道怎么做!

4

1 回答 1

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);
  }

}
于 2019-10-28T07:42:24.820 回答