ios - Alamofire 的响应不正确?
问题描述
我正在使用 Alamofire 向服务器发出请求。这是我的做法:
Alamofire.request(url, method: .post, parameters: [:] ,encoding: JSONEncoding.default).responseJSON { response in
print("response=\(response)")
print("Response=:\((response.response?.statusCode)!)")
switch response.result{
case .success :
let passList = AuthenticateSuccess(nibName: "AuthenticateSuccess", bundle: nil)
self.navigationController?.pushViewController(passList, animated: true)
print("connected")
case .failure(let error):
self.showAlertTost("", msg: "Authentication Failed. Authenticate again!", Controller: self)
}
}
这是打印的:
response=SUCCESS: {
message = "Access denied.";
}
Response=:401
connected
我想知道如果 401 是错误,为什么要执行成功块?Alamofire 中的故障案例处理方式是否不同?
解决方案
正如文档所说:
默认情况下,无论响应的内容如何,Alamofire 都会将任何已完成的请求视为成功。
validate()
如果响应具有不可接受的状态代码或 MIME 类型,则在响应处理程序之前调用会导致生成错误。
例如
Alamofire.request(url, method: .post, encoding: JSONEncoding.default)
.validate()
.responseJSON { response in
...
}
使用validate
,非 2xx 响应现在将被视为错误。
推荐阅读
- vespa - 可以按count()存储吗?
- reactjs - 减速器动作没有动态更新
- python - 主持两个不同的项目 django
- mysql - res.sendFile in the callback of a sql query
- sql-server - 在 SQL Server 中的 ^ 之后取正确的字符串
- jenkins - Jenkinsfile - 如何为所有阶段传递参数
- vb.net - 创建一个以日期和时间为文件名的文本文件
- swift - Swift,包含整数的数组文字可以与整数数组互换使用吗?
- reactjs - React no-unused-expressions
- c# - 无法为 SSL/TLS 建立安全通道,在 Visual Studio 中添加新服务引用