【问题标题】:How to use one HttpClient instance to request many URLs with different domain?如何使用一个 HttpClient 实例请求多个不同域的 URL?
【发布时间】:2018-07-30 02:52:43
【问题描述】:

文档显示 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

【问题讨论】:

  • 我也有同样的问题。我有数据库中的 url,所以我在编译时知道它们

标签: micronaut


【解决方案1】:

Micronaut 中的 HttpClient 和后续的 RxHttpClient 的范围为给定的 URL。它们维护一些配置、负载平衡、调度、SSL 上下文信息和范围为配置的URL 的 HTTP 客户端过滤器。在您的示例中,您需要注入两个不同的客户端。

@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

【讨论】:

  • 我的意思是 URL 可以来自任何域,而不仅仅是 2 个域。 Spring RestTemplate 和 WebClient 可以请求任何域 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 2014-12-11
  • 2011-03-13
相关资源
最近更新 更多