代码之家  ›  专栏  ›  技术社区  ›  Anilkumar iOS Developer

Alamofire API请求失败,swift 3中的responseSerializationFailed

  •  1
  • Anilkumar iOS Developer  · 技术社区  · 7 年前

    我使用Alamofire调用普通的API调用,并且我不会在networking manager类中传递任何数据。

    我的网络课程是

    func executeGetRequest(url:String,requestVC:UIViewController,completionHandler:@escaping (_ responseObject:Any?) -> Void!,failureHandler:@escaping (_ connectionError:NSError?) -> Void!){
    
        //Checking internet alert
        if !self.isConnectedToInternet(){
            // requestVC.showAlert(kText_AppName, message: kText_NoInternet)
            return
        }
    
        requestVC.showLoader()
        Alamofire.request(url).responseJSON {
            (response:DataResponse) in
    
            requestVC.removeLoader()
    
            switch(response.result) {
            case .success(_):
                if response.result.value != nil{
                    completionHandler (response.result.value)
                }
                break
    
            case .failure(let error):
                failureHandler (error as NSError?)
                break
    
            }
        }
    }
    

    我在主课上给它打电话

    kNetworkManager.executeGetRequest(url: kAppAccessTokenURL, requestVC: self, completionHandler: {
         (responseObject) -> () in
              print("responseObject:\(responseObject!)")
    
    
          }, failureHandler: {(error)-> () in
              print("response object:\(error!)")
              self.showAlert(message: (error?.description)!, title: kText_AppName)
              if error?._code == NSURLErrorTimedOut {
                    //timeout here
                    self.showAlert(message: kText_timeout, title: kText_AppName)
               }
          })
    

    它的getting always请求失败,并显示错误为 responseSerializationFailed

    如果我直接在Main类中调用,而没有manager类,如

    Alamofire.request(kAppAccessTokenURL).responseString { response in
    

    我能得到回应,有人能告诉我在网络课上哪里出错了吗。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Shehata Gamal    7 年前

    给你

    Alamofire.request(kAppAccessTokenURL).responseString
    

    还有那里

     Alamofire.request(url).responseJSON
    

    注意这个

         let jsonText = "{\"first_name\":\"Sergey\"}"
            var dictonary:NSDictionary?
    
            if let data = jsonText.dataUsingEncoding(NSUTF8StringEncoding) {
    
                do {
                    dictonary =  try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject]
    
                    if let myDictionary = dictonary
                    {
                         print(" First name is: \(myDictionary["first_name"]!)")
                    }
                } catch let error as NSError {
                    print(error)
                }
            }