如何处理HTTP状态码?

时间:2019-04-30 00:47:54

标签: ios swift error-handling alamofire http-status-codes

我正在使用Alamofire。因此,在响应中有状态码。我应该检查并处理所有可用的状态码情况还是应该采取什么措施。

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

                // ...........
                default:
                    print(response.result.value)
}

5 个答案:

答案 0 :(得分: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
    }

}

答案 1 :(得分:0)

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

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

答案 2 :(得分: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

答案 3 :(得分:0)

请参阅以下内容以从import React from "react"; import ReactDOM from "react-dom"; import { from } from "rxjs"; import { reduce } from "rxjs/operators"; class App extends React.Component { constructor(props) { super(props); this.state = { fromArray: [1, 2, 3, 4, 5] }; } componentDidMount() { const observable$ = from(this.state.fromArray).pipe( reduce((acc, value) => [...acc, value + 1], []) ); this._subscription = observable$.subscribe(newFromArray => { return this.setState({ fromArray: newFromArray }); }); } componentWillUnmount() { this._subscription.unsubscribe(); } render() { const { fromArray } = this.state; return ( <ul> {fromArray.map((item, index) => ( <li key={index}>{item}</li> ))} </ul> ); } } const rootElement = document.getElementById("root"); ReactDOM.render(<App />, rootElement);获取状态代码,希望对您有所帮助。

HTTPURLResponse

答案 4 :(得分:0)

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

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

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