2017-12-21 29 views
1

Alamofireで通常のAPI呼び出しを呼び出していますが、ネットワーキングマネージャークラスでそのデータを渡していません。Alamofire APIリクエストが応答時に失敗しました3

マイネットワーククラスは

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

そのはいつも私が直接呼び出した場合は失敗とresponseSerializationFailed

としてエラーを示す要求ばかりを、それを呼び出していますマネージャクラスなしのメインクラス

Alamofire.request(kAppAccessTokenURL).responseString { response in 

私は応答を得ることができます、誰も私にネットワークのクラスで間違って取得を示唆することができます。ここで

+0

' Alamofire.request(kAppAccessTokenURL)を見、あなたの回答になりたいので、文字列。しかし、あなたが 'Alamofire.request(url).responseJSON'を呼び出すと、応答がJSONではなくランダムな文字列であるため、' Alamofire'にjsonへの応答をシリアル化するように頼むと、 –

+0

これを解決する方法はありますか? –

+0

'Alamofire.request(kAppAccessTokenURL).responseString'に何が入っているのか確認し、JSONではなくこのレスポンスを受け取っていることをサーバーの担当者に伝えてください –

答えて

1

あなたは

Alamofire.request(kAppAccessTokenURL).responseString 

とそこ

Alamofire.request(url).responseJSON 

`作品を.responseStringその

 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

私はそこにURLを渡しています@Uma Madhavi –

+0

@umaMadhaviそのjsonデータはどうすればできますか? –

+0

応答文字列が動作する場合、それをnsdictionaryに変換します –

関連する問題