【问题标题】:Unable to handle http codes in swift iOS?无法在 swift iOS 中处理 http 代码?
【发布时间】:2018-06-08 11:52:36
【问题描述】:

我是 iOS 新手,并且在我的项目中 swift 我正在使用 Alamofire,我正在成功处理数据,但我无法以简单的方式处理不同类型的服务器代码,任何人都可以帮助我解决我的问题。

这是我的服务电话

func requestPOSTURL(_ strURL : String, params : [String : AnyObject]?, headers : [String : String]?, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void){
    Alamofire.request(strURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (responseObject) -> Void in
        //print(responseObject)
        if responseObject.result.isSuccess {
            let resJson = JSON(responseObject.result.value!)
            success(resJson)
        }
        if responseObject.result.isFailure {
            let error : Error = responseObject.result.error!
            let dic = ["NSLocalizedDescription" : error.localizedDescription]
            failure(error)
        }
    }
}

我在我的课堂上使用这样的。

AFWrapper.AFsharedInstance.requestPOSTURL(Post_Hod_Indexes_sections_URL, params: dicParams, headers: headers, success: {
    (json) in
    print(json)

    DispatchQueue.main.async {
        self.hideSpinner()

        let swiftyJsonVar = JSON(json)
        let status = swiftyJsonVar["status"].rawString() as!String

        print("status", status)
        if status.isEqual("404") {
            let message = swiftyJsonVar["message"].rawString()
            self.displayMsg(title: "Oops!", msg: message!, style: .alert)
            return
        }
        else if status.isEqual("200") {
            let message = swiftyJsonVar["message"].rawString()
            self.displayMsg(title: "", msg: message!, style: .alert)
            return
        }
        else if status.isEqual("500") {
            let message = swiftyJsonVar["message"].rawString()
            self.displayMsg(title: "", msg: message!, style: .alert)
            return
        } else {
            let message = swiftyJsonVar["message"].rawString()
            self.displayMsg(title: "", msg: message!, style: .alert)
            return

        }
    }

}, failure: {
    (error) in

    self.hideSpinner()
    self.displayMsg(title: "Oops!", msg: "Something went wrong try again after sometime", style: .alert)

})
}

【问题讨论】:

    标签: ios swift http alamofire


    【解决方案1】:

    使用 alamofire 从服务器响应中获取状态代码是 responseObject.response?.statusCode。(来自您的代码)

    Alamofire.request(strURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (responseObject) -> Void in
    
    
        if let code = responseObject.response?.statusCode {
            print(code)
    
             switch code {
    
        case 200:
            // OK. you can convert here response in model class, like...
    
            /*   if responseObject.result.isSuccess {
                   let resJson = JSON(responseObject.result.value!)
                   success(resJson)
               }
            */
            break
        case 500:
            //Internal server error, do stuff
    
            break
        case 404:
    
            //Not fount. Do stuff
    
            break
    
         // you can add more case to manage diff. server status code
    
        default:
            break
        }
       }
    
    }
    

    【讨论】:

    • 我得到了多个 http 代码,基于代码如何显示弹出窗口。
    • toast 你可以使用第三方库,有很多可用的。或者,您可以显示警报控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 2019-11-03
    • 1970-01-01
    • 2017-01-16
    • 2019-03-06
    • 1970-01-01
    相关资源
    最近更新 更多