如果 Alamofire 4 中发生任何故障,如何捕获
Posted
技术标签:
【中文标题】如果 Alamofire 4 中发生任何故障,如何捕获【英文标题】:How to catch if any failure happens in Alamofire 4 【发布时间】:2017-05-16 17:30:51 【问题描述】:我正在以这种方式调用我的网络服务。
public func prepareUrl (baseUrl: String, appendString: String, bindedParams: String, isAuthorized: Bool, method: HTTPMethod, jsonBody: [String:String], callback: @escaping (String) ->Void> Void)
let dm=Datamanager.sharedInstance
let baseUrl=dm.globalUrl
let urlString=baseUrl!+appendString as String+bindedParams as String
print(urlString)
Alamofire.request(urlString, method: method, parameters: nil, encoding: JSONEncoding.default)
.downloadProgress(queue: DispatchQueue.global(qos: .utility)) progress in
print("Progress: \(progress.fractionCompleted)")
.validate request, response, data in
// Custom evaluation closure now includes data (allows you to parse data to dig out error messages if necessary)
return .success
.responseJSON response in
debugPrint(response)
callback("success")
但是我如何在这里进行错误处理。即使我提到了 github Alamofire 4.0 迁移,我也不清楚该怎么做。 请帮我。 谢谢
【问题讨论】:
粘贴的代码无法编译。守卫声明中缺少一个主体。 对不起,我更新的方式正确。 【参考方案1】:在 Alamofire gitHub 中有这样的方法: 你不需要验证,Alamofire 默认验证是 200 到 299 是成功的,你可以从响应中得到错误。
public func prepareUrl (baseUrl: String, appendString: String, bindedParams: String, isAuthorized: Bool, method: HTTPMethod, jsonBody: [String:String], callback: @escaping (String) ->Void> Void)
let dm=Datamanager.sharedInstance
let baseUrl=dm.globalUrl
let urlString=baseUrl!+appendString as String+bindedParams as String
print(urlString)
Alamofire.request(urlString, method: method, parameters: nil, encoding: JSONEncoding.default)
.downloadProgress(queue: DispatchQueue.global(qos: .utility)) progress in
print("Progress: \(progress.fractionCompleted)")
.responseJSON response in
debugPrint(response)
switch response.result
case .success:
callback("success")
case .failure(let error):
print(error)
查看documentation
【讨论】:
我在纠结应该把这个放在哪里 为什么要验证?告诉我,这样我就可以放完整的代码了。 如果我遇到任何网络故障或 HTTP 状态代码变成错误代码 @Randi 再看看答案以上是关于如果 Alamofire 4 中发生任何故障,如何捕获的主要内容,如果未能解决你的问题,请参考以下文章