如何使用一个HttpClient实例来请求多个具有不同域的URL?

时间:2018-07-30 02:52:44

标签: micronaut

文档显示Http客户端应设置要实例化的URL或服务ID:

@Client("https://api.twitter.com/1.1") 
@Inject 
RxHttpClient httpClient;

如何使用一个HttpClient实例来请求多个具有不同域的URL?

@Client 
@Inject 
RxHttpClient httpClient;

httpClient.retrieve( HttpRequest.GET("https://twitter.com/") )
httpClient.retrieve( HttpRequest.GET("https://www.google.com/") )

代码将返回错误: No value specified for @Client\r\nPath Taken

1 个答案:

答案 0 :(得分:1)

HttpClient中的RxHttpClient和随后的Micronaut的范围是给定的URL。他们维护一些配置,负载平衡,调度,SSL上下文信息和HTTP客户端筛选器,范围仅限于已配置的URL。在您的示例中,您将需要注入两个不同的客户端。

@Inject 
@Client("https://api.twitter.com/1.1") 
RxHttpClient twitterClient;

@Inject 
@Client("https://www.google.com") 
RxHttpClient googleClient;

twitterClient.retrieve( HttpRequest.GET("/statuses/user_timeline") )
googleClient.retrieve( HttpRequest.GET("/some/available/endpoint") )

还请注意,可以将注入的RxHttpClient设置为use a configuration path if desired