liujingxing / rxhttp

🔥🔥🔥 Based on OkHttp encapsulation, support Kotlin Coroutines、RxJava2、RxJava3; 30s to get started.
https://juejin.im/post/5ded221a518825125d14a1d4
Apache License 2.0
3.74k stars 457 forks source link

不能直接得到Response吗 #492

Closed xxxxxxH closed 4 months ago

xxxxxxH commented 4 months ago

image 同一时间请求的,一个库行一个不行,还请作者答疑一下,

liujingxing commented 4 months ago

添加文件用addFile方法

liujingxing commented 4 months ago

另外,RxHttp不支持单独获取okhttp3.Response,但支持获取OkResponse<T>对象,更加方便,仅需在toXxx方法后调用toXxxOkResponse方法即可,如下:

//await写法
RxHttp.get("../server/..")
    .toAwait<User>()  //可传入任意实体类
    .toAwaitOkResponse()  //返回 Await<OkResponse<User>>对象
    .awaitResult {
        val user = it.body()  //User对象
        val response = it.raw()  //okHttp3.Response对象
        val headers = it.headers()  //okhttp3.Headers对象
    }.onFailure {
        it.show()  //失败回调
    }

//Flow写法
RxHttp.get("../server/..")
    .toFlow<User>()
    .toFlowOkResponse()    //返回 Flow<OkResponse<User>>对象
    .catch {
        it.show()  //失败回调
    }.collect {
        val user = it.body()  //User对象
        val response = it.raw()  //okHttp3.Response对象
        val headers = it.headers()  //okhttp3.Headers对象
    }

//RxJava写法
RxHttp.get("../server/..")
    .toObservable<User>()
    .toObservableOkResponse()  //返回 Observable<OkResponse<User>>对象
    .subscribe({
        val user = it.body()  //User对象
        val response = it.raw()  //okHttp3.Response对象
        val headers = it.headers()  //okhttp3.Headers对象
    }, {
        it.show()  //失败回调
    })
xxxxxxH commented 4 months ago

非常感谢