我们有这个Alamofire错误处理:
Alamofire.request(.GET, getUrl("mystuff")).responseData { response in
guard response.result.error == nil else {
//Handle error
}
}
如果无法访问服务器或证书无效等,它可以正常工作
但是如果可以访问服务器但返回404 / etc响应代码,则不会触发此错误处理代码。如何将此用例的支持折叠到此代码中?
答案 0 :(得分:1)
响应的result属性包含代码,如果它不是nil。 否则,您可以获得statusCode。
if let error = response.result.error
{
let statusCode = error.code
}
else
{
let statusCode = (response.response?.statusCode)!
}
答案 1 :(得分:0)
我对请求,响应和结果都有效,并且它可以为我工作,我的代码如下所示
Alamofire.request(.GET, "url", parameters: nil)
.responseJSON { (request, response, result) -> Void in
print(result.value)
if(result.isSuccess) {
completionBlock( error : nil, responseDict : result.value as! [String : AnyObject])
}
else {
print("error")
// completionBlock(error: errno_t, responseDict: nil)
}
}
希望它有用
答案 2 :(得分:0)
阅读文档很有帮助.....我最终使用了Alamofire validate
API method:
Alamofire.request(.GET, getUrl("mystuff")).validate().responseData { response in
guard response.result.error == nil else {
//Handle error
}
}
它处理返回代码的验证以及一般连接问题。还处理内容类型的验证(有关详细信息,请参阅链接的文档...)
答案 3 :(得分:0)
使用
public func validate(_ validation: @escaping Validation) -> Self
来自DataRequest