0

我正在尝试创建一个返回Observable<(HTTPURLResponse, Any)>使用的函数RxAlamofire

class APIManager {
    let disposeBag = DisposeBag()
    func getResponse(credentialData: Credentials, ulr: String)->Observable<(HTTPURLResponse, Any)>{
    let credentialData = "\(credentialData.username):\(credentialData.password)".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))!
    let base64Credentials = credentialData.base64EncodedString()
    let headers = ("Authorization", "Basic \(base64Credentials)")
    let header = HTTPHeaders.init(dictionaryLiteral: headers)
    return Observable.create{ observer in
        requestJSON(.get, ulr, parameters: nil, encoding: JSONEncoding.default, headers: header)
        .subscribe(onNext: { response in
            observer.onNext(response)
            } ,


    onError: { error in
        observer.onError(error)
        },
    onCompleted: {},
    onDisposed: {}).disposed(by: self.disposeBag)
    return Disposables.create()
    }
}    

}

里面的代码onNext没有被执行;它只是通过onDisposed

我该如何解决?

4

1 回答 1

0

为什么你requestJSON要用另一个 Observable 包装函数,它只是转发相同的元素和错误,而该函数已经返回了你需要的 Observable?

这对你来说还不够吗?

class APIManager {
    func getResponse(credentialData: Credentials, ulr: String) -> Observable<(HTTPURLResponse, Any)> {
        let credentialData = "\(credentialData.username):\(credentialData.password)"
            .data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))!
        let base64Credentials = credentialData.base64EncodedString()
        let headers = ("Authorization", "Basic \(base64Credentials)")
        let header = HTTPHeaders.init(dictionaryLiteral: headers)
        return requestJSON(.get, ulr, parameters: nil, encoding: JSONEncoding.default, headers: header)
    }
}
于 2020-02-14T15:52:26.003 回答