簡體   English   中英

如何使用moya,rxswift重新啟動網絡請求

[英]How to restart a net request with moya ,rxswift

我要處理每個請求,如果請求的響應與條件不匹配,則啟動一個新請求並獲取響應。 如何重新啟動舊請求

這是我的代碼

static func request(target: API) -> Observable<Response> {
        let actualRequest = provider.request(target)
        return self.provider.request(target).flatMapLatest { (response) -> Observable<Response> in
            let responseModel = ResponseModel(data:response.data)

            if responseModel.code == -405 {
                let refreshToken = User.shared?.refreshToken
                self.provider.request(.refreshToken(refresh: refreshToken!)).flatMap({ response -> Observable<String> in
                   return Observable.just("")

                }).shareReplay(1).subscribe(onNext: { refreshToken in
                  // here I get a new token, how to retry the actualRequest , or how to start a new network request with the target 
                }, onError: { (error) in

                },onCompleted: { _ in

                })

            }

                return Observable.just(response)
        }
    }

您應該子類化MoyaProvider,重寫請求方法,然后可以在其中檢查api的響應,並在需要時重試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM