0

我正在finagle用作rest客户端。在ClientBuilder我指定了主机范围,但请求需要使用主机设置 url。如何避免在请求中指定主机并让 finagle 选择一个?谢谢。

    val client = ClientBuilder().hosts("host1:81,host2:82").codec(Http()).build()

    val request = RequestBuilder()
        // .url("http://host1/get") // dont want to specify host
        // .url("/get") // MalformedURLException: no protocol
        .buildGet()

    var resp = client(request) // sent to host specified by url
4

1 回答 1

2

看起来你正在使用finagle-http模块。在 URL 中没有主机的情况下,无法使用RequestBuilder. 不过,您可以Request手动构建(或创建自己的 RequestBuilder 以供进一步使用)

但是,我建议切换到finagle-httpx模块(https://github.com/twitter/finagle/tree/develop/finagle-httpx)。它与 不兼容finagle-http,但它有很多 API 改进,并且能够在其中创建没有 URL 中的主机的请求,例如:

val client = Httpx.client.withTls("my.api")
  .newService("host1.my.api:443,host2.my.api:443")

val req = Request("/get")

val rep = client(req)
于 2015-08-21T10:08:02.517 回答