无法在 swift iOS 中处理 http 代码?

Posted

技术标签:

【中文标题】无法在 swift iOS 中处理 http 代码?【英文标题】:Unable to handle http codes in swift iOS? 【发布时间】: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)

)

【问题讨论】:

【参考方案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 你可以使用第三方库,有很多可用的。或者,您可以显示警报控制器。

以上是关于无法在 swift iOS 中处理 http 代码?的主要内容,如果未能解决你的问题,请参考以下文章

swift_dynamiccast 处理过多并影响 iOS 中的性能

无法在 Swift 中使用网络扩展框架 iOS 8 设置 *** 连接

Objective C to Swift代码转换,似乎无法在Swift中正确处理字节

监听蓝牙外设按钮事件 iOS Swift

Swift 结合处理 HTTP 状态码错误

在完成处理程序中隐藏http状态代码的进度条 - Swift 4