是否有适用于 RxJava 的异步最新 http 客户端?

Is there any asynchronous up-to-date http client for RxJava?

Reactor-core 和 Spring 5 刚刚为其 Mono/Flux 发布者引入了新的异步 WebClient。

因为用 Observable 包装 RestTemplate 请求并订阅它以提供异步性是很常见的,所以我想知道是否有 RxJava 的异步客户端。

我发现 https://github.com/ReactiveX/RxApacheHttp 但它似乎不受支持,它的最后一次提交是从 2014 年开始的,甚至在我的测试中都不起作用。

有,但不太清楚,是否适合您的需求:

Retrofit2

为了能够以 Observable 的形式获得响应,请将以下内容添加到您的 build.gradle 文件中:

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'

在众多选项中,您有:

Retrofit retrofit = new Retrofit.Builder()
    (...)
    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
    (...)
    .build();

在 class 之后,即 Retrofit 的接口,每个函数都可以将 Observable<{class_to_return}> 作为返回对象:

retrofit.create({interface_class}.class)

接口class(示例):

Observable<ApiUser> postLogin({parameters});

您可以使用基于 Netty 的 RxNetty(https://github.com/ReactiveX/RxNetty)。

您还可以将 Netflix Ribbon (https://github.com/Netflix/ribbon) 与 RxNetty 一起使用。

另一种选择 - AsyncHttpClient. Maven link

起点:

RxHttpClient.create(AsyncHttpClient asyncHttpClient) ;