2017-12-21 3 views
1

bekomme ich einen normalen API-Aufruf mit Alamofire, und ich gebe keine Daten mit denen in Netzwerk-Manager-Klasse.Alamofire API-Anfrage wird mit responseSerializationFailed in Swift 3

Meine Networking-Klasse ist

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 

     } 
    } 
} 

und ich rufe es von meinem Hauptklasse

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) 
      } 
     }) 

Sein bekommen immer Anforderung fehl und zeigt Fehler als responseSerializationFailed

wenn ich direkt anrufen in Hauptklasse ohne Managerklasse wie

Alamofire.request(kAppAccessTokenURL).responseString { response in 

Ich bin in der Lage, Antwort zu bekommen, kann mir jemand vorschlagen, wo falsch in Network-Klasse.

+0

'Alamofire.request (kAppAccessTokenURL) .responseString' funktioniert, weil Sie Ihre Antwort ein sein Zeichenfolge. Aber wenn Sie 'Alamofire' bitten, die Antwort in json zu serialisieren, also 'Alamofire.request (url) .responseJSON' aufzurufen, dann scheitert es, weil Ihre Antwort kein JSON ist, sondern eine zufällige Zeichenfolge –

+0

Also, wie kann man das beheben? –

+0

Überprüfen Sie, was Sie in der Alamofire.request (kAppAccessTokenURL) .responseString erhalten und sagen Sie Ihrem Server Kerl, dass Sie diese Antwort anstelle von JSON bekommen –

Antwort

1

Hier können Sie

Alamofire.request(kAppAccessTokenURL).responseString 

und dort

Alamofire.request(url).responseJSON 

Blick zu, dass

 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) 
      } 
     } 
+0

Ich bin da url nur @Uma Madhavi –

+0

@umaMadhavi wenn seine JSON Daten wie können wir es tun? –

+0

Wenn Antwortstring funktioniert, wandeln Sie es in nsdictionary um –

Verwandte Themen