gpt4 book ai didi

ios - Alamofire 5.0.0-rc.3 RequestInterceptor Adapt 方法没有被 Alamofire 调用,尽管在响应有任何错误时调用重试

转载 作者:行者123 更新时间:2023-11-29 13:52:42 29 4
gpt4 key购买 nike

Alamofire 5.0.0-rc.3 RequestInterceptor Adapt 方法未被调用 Alamofire,尽管在响应有任何错误时会调用重试。

方法:

    func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (AFResult<URLRequest>) -> Void) {
}
class Interceptor: RequestInterceptor {

func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (AFResult<URLRequest>) -> Void) {
print("ADAPT :=")
completion(.success(urlRequest))
}

func retry(_ request: Request, for session: Session, dueTo error: Error, completion: @escaping (RetryResult) -> Void) {
print("RETRY :=")
completion(.doNotRetry)

}
}

不同类的网络请求方法:

    public func request<T: Codable> (_ urlConvertible: URLRequestConvertible) -> Observable<T> {
return Observable<T>.create { observer in

// 1
print("Url := \(urlConvertible.urlRequest!.url!)")

// 2
let request = AF.request(urlConvertible, interceptor: Interceptor()).responseDecodable { (response: AFDataResponse<T>) in

if let data = response.data{
print("Response := \(String(decoding: data, as: UTF8.self))")
}
else{
print("data is nil")
}

switch response.result {
case .success(let value):
print("value :-> \(value)")
observer.onNext(value)
observer.onCompleted()
case .failure(let error):

observer.onError(error)
}
}

//Finally, we return a disposable to stop the request
return Disposables.create {
request.cancel()
}
}

}

最佳答案

看这里:

https://github.com/Alamofire/Alamofire/issues/2998

函数没有被调用,因为有歧义...

在拦截器中:

添加这个:

typealias AdapterResult = Swift.Result<URLRequest, Error>

并在“adapt”方法中替换@escaping 参数:

@escaping (RetryResult)

它应该有效。

关于ios - Alamofire 5.0.0-rc.3 RequestInterceptor Adapt 方法没有被 Alamofire 调用,尽管在响应有任何错误时调用重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58852844/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com