【问题标题】:Alamofire status code not returned in fail part失败部分未返回 Alamofire 状态码
【发布时间】:2018-07-09 00:55:42
【问题描述】:

我想在我的 Alamofire 请求的失败部分中捕获一些状态响应。

以下代码:

let URL = "https://api.foo.bar"
Alamofire.request(URL, method: .post, parameters: parameters).responseObject { (response: DataResponse<UserResponse>) in
    switch response.result {
    case .success:
        // Yea, it worked.
    case .failure(let error):
        print(error)        
    }
    if let httpStatusCode = response.response?.statusCode {
        switch(httpStatusCode) {
        case 418:
            let alert = UIAlertController(title: "Whoops", message: "I't s a Teapot.", preferredStyle: UIAlertControllerStyle.alert)
            alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
            self.present(alert, animated: true, completion: nil)
            break
        default:
            print("DEFAULT...")
            break
            //
        }
    }
}

由于某种原因返回 500 错误,但这不是来自 API,而是来自代码本身,但它是从哪里引起的呢?我不知道如何正确获取 Status code 响应。

【问题讨论】:

  • 你尝试过error.errorCode
  • 你可以试试这个答案:- stackoverflow.com/a/47952330/6822622
  • @Sulabh "'Error' 类型的值没有成员 'statusCode'" 也没有成员 'errorCode'
  • 试试error._code,它会给你一个NSError Code。例如,当您没有连接时会发生这种情况......

标签: swift alamofire


【解决方案1】:

您可以像这样从响应中访问状态代码:

switch response.result {
    case .success(let jsonResult):
        // Case result OK
        print(jsonResult)
    case .failure(let error):
        // Case result Fail error
        if let resp = response.response, resp.statusCode == 401 {
            print("401 statusCode")
        }
}

【讨论】:

    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多