Ios Alamofire 5.0.0-rc.3请求侦听器Adapt方法未调用Alamofire,尽管在响应中出现任何错误时会调用retry
Alamofire 5.0.0-rc.3请求侦听器Adapt方法未调用Alamofire,尽管在响应中出现任何错误时会调用retry 方法:Ios Alamofire 5.0.0-rc.3请求侦听器Adapt方法未调用Alamofire,尽管在响应中出现任何错误时会调用retry,ios,swift,alamofire,Ios,Swift,Alamofire,Alamofire 5.0.0-rc.3请求侦听器Adapt方法未调用Alamofire,尽管在响应中出现任何错误时会调用retry 方法: func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (AFResult<URLRequest>) -> Void) { } func adapt(rlrequest:urlRequest,对于会话:会话,完成:@esca
func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (AFResult<URLRequest>) -> Void) {
}
func adapt(rlrequest:urlRequest,对于会话:会话,完成:@escaping(AFResult)->Void){
}
类拦截器:请求拦截器{
func adapt(urlRequest:urlRequest,对于会话:会话,完成:@escaping(AFResult)->Void){
打印(“调整:=”)
完成(.success(urlRequest))
}
func重试(u请求:请求,针对会话:会话,由于错误:错误,完成:@escaping(RetryResult)->Void){
打印(“重试:=”)
完成(.donotry)
}
}
不同类别中的网络请求方法:
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()
}
}
}
public func请求(\urlconverable:urlrequestconverable)->可观察{
返回可观察的。在中创建{observer
// 1
打印(“Url:=\(urlconverable.urlRequest!.Url!))
// 2
让request=AF.request(urlconverable,interceptor:interceptor()).responseDecodable{(response:AFDataResponse)在
如果let data=response.data{
打印(“响应:=\(字符串(解码:数据,如:UTF8.self)))
}
否则{
打印(“数据为零”)
}
开关响应。结果{
成功案例(let value):
打印(“值:->\(值)”)
observer.onNext(值)
observer.onCompleted()
案例。失败(let错误):
observer.onError(错误)
}
}
//最后,我们返回一个一次性消息来停止请求
归还一次性物品。创建{
请求取消()
}
}
}
参见此处:
未调用该函数,因为存在歧义
在拦截器中:
添加以下内容:
typealias AdapterResult = Swift.Result<URLRequest, Error>
它应该有效
typealias AdapterResult = Swift.Result<URLRequest, Error>
@escaping (RetryResult)