Не удается обработать http-коды в быстрой iOS? - PullRequest
0 голосов
/ 08 июня 2018

Я новичок в iOS и быстро использую свой проект. Я использую 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 Ответ

0 голосов
/ 08 июня 2018

Чтобы получить код состояния из ответа сервера, используя 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
    }
   }

}
...