首页 > 解决方案 > 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 中的故障案例处理方式是否不同?

标签: iosswiftrequestalamofireresponse

解决方案


正如文档所说:

默认情况下,无论响应的内容如何,​​Alamofire 都会将任何已完成的请求视为成功。validate()如果响应具有不可接受的状态代码或 MIME 类型,则在响应处理程序之前调用会导致生成错误。

例如

Alamofire.request(url, method: .post, encoding: JSONEncoding.default)
    .validate()
    .responseJSON { response in
        ...
}

使用validate,非 2xx 响应现在将被视为错误。


推荐阅读