如何处理HTTP状态代码?

问题描述 投票:1回答:5

我正在使用Alamofire。因此在响应中有状态代码。我应该检查并处理每个可用的状态代码案例或我应该怎样处理这些。

switch response.response?.statusCode {
                case 201:
                    print("created user")
                case 400:
                    print("Bad request")

                // ...........
                default:
                    print(response.result.value)
}
ios swift error-handling alamofire http-status-codes
5个回答
0
投票

实际上不需要检查每个状态代码。我通常会做的是使用下面的模板检查请求是成功还是失败。

Alamofire.request(request).responseJSON { (response) in

    switch response.result {
    case .success:
        if let httpURLResponse = response.response {
            if httpURLResponse.statusCode == 200 {
                // Success
            } else {
                // Response Unsuccessful
            }
        } else {
            // Response Unsuccessful
        }
    case .failure:
        // Request Failed
    }

}

0
投票

您可以检查响应代码是否在200-299之间。这会告诉你请求是成功的。任何其他代码都是失败的。

如果要显示特定错误,请使用响应代码。这是标准的response codes列表。如果您可以控制API,请坚持使用标准代码。


0
投票

请参阅以下内容以获取HTTPURLResponse的状态代码,希望对您有所帮助。

if let httpResponse = response as? HTTPURLResponse {
     print("error \(httpResponse.statusCode)")
     if httpResponse.statusCode == 200{
         //Success
     }else{
         //Failed
     }
}else {
     //Failed
}

0
投票
    httpResponse = response as! HTTPURLResponse
    print(httpResponse.statusCode) // this will shown the status code so you can easily get which type of error code is generate

    if(httpResponse.statusCode == 200)
    {
        //Success
    } 
    else
    {
        //Failure
    }

您可以检查错误类型

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes


0
投票

您通常不需要实际知道特定的错误代码,只需要知道请求是否成功。但我可以看到一个开发人员工具或类似的东西,你可能想要显示实际的代码。

这样的事情会很好,并不需要检查每个可能的状态代码的情况。

if let httpResponse = response as? HTTPURLResponse {
  print("error \(httpResponse.statusCode)")
  if httpResponse.statusCode == 200{
    //Success
  }else{
    //Failed
    statusCodeLabel.text = httpResponse.statusCode 
  }
}else {
  //Failed
}
© www.soinside.com 2019 - 2024. All rights reserved.