2016-05-17 3 views
0

Ce que je l'ai fait: -Passage de paramètres Utilisation AFNetworking dans rapide

1.I veulent appeler les services à l'aide AFHTTPSessionManager

2.I veulent passer les paramètres que dans JSON Format en utilisant POST la méthode et j'ai également essayé de passer les paramètres comme JSON mais je recevais Bad Request

3.Grâce AFNetworking 3.0

  1. lien visé Convert Dictionary to JSON in Swift

MON CODE: -

 dict = ["email_id":user! , "password": pass!] 

    do { 
       jsonData = try NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions.PrettyPrinted) 
       // here "jsonData" is the dictionary encoded in JSON data 
       theJSONText = String(data: jsonData!, 
              encoding: NSASCIIStringEncoding) 
       print("json string = \(theJSONText)") 


      } catch let error as NSError { 
       print(error) 
      } 



    manager.POST(urlString, parameters: theJSONText as String!, success: 
       { 
        requestOperation, response in 

        let result = NSString(data: response as! NSData, encoding: NSUTF8StringEncoding)! 

        print(result) 
       }, 
         failure: 
       { 
        requestOperation, error in 
        //let result = NSString(data: error as! NSData, encoding: NSUTF8StringEncoding)! 

        print(error) 

      }) 

QU'EST-CE QUE JE VEUX FAIRE: - Je souhaite passer le paramètre au format JSON

 Printing description of theJSONText: 
"{\n \"email_id\" : \"bbh\",\n \"password\" : \"vh\"\n}" 

Après conversion en JSON STRING aussi je ne reçois pas JSON Format

s'il vous plaît aidez-moi à faire ..

+0

pourquoi vous prenez trop de complication, vous pouvez passer directement le dict o param –

+0

Je veux envoyer comme format JSON – Murugesh

+0

dict également passé en format JSON –

Répondre

0

supprimer la ligne ci-dessous à partir du code,

theJSONText = String(data: jsonData!, 
             encoding: NSASCIIStringEncoding) 
      print("json string = \(theJSONText)") 

Set option 0 au lieu de NSJSONWritingOptions.PrettyPrinted dans sérialisation JSON

et passer jsonData (en tant que données) en tant que paramètre au lieu de theJSONText.

Mise à jour:

Essayez comme ça, dans cette réponse exemple

let urlString = "http://example.com/file.php" 
let dictionary = ["key1": [1,2,3], "key2": [2,4,6]] 

var error: NSError? 
let data = NSJSONSerialization.dataWithJSONObject(dictionary, options: NSJSONWritingOptions.allZeros, error: &error) 
let jsonString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
let parameters = ["data" : jsonString!] 

let manager = AFHTTPSessionManager() 
manager.responseSerializer = AFHTTPResponseSerializer() 
manager.POST(urlString, parameters: parameters, success: 
{ 
    requestOperation, response in 

    let result = NSString(data: response as! NSData, encoding: NSUTF8StringEncoding)! 

    println(result) 
}, 
failure: 
{ 
    requestOperation, error in 
}) 

est dans la chaîne, Si la réponse au format JSON alors vous devriez sérialiser en JSON en utilisant nsjsonserialization au lieu de chaîne

Espérons que cela aidera :)

+0

J'ai supprimé cette ligne et ajouter jsonData = try NSJSONSerialization.dataWithJSONObject (dict, options: NSJSONWritingOptions (rawValue: 0)) – Murugesh

+0

au lieu de NSJSONWritingOptions.PrettyPrinted maintenant aussi je reçois le même problème BAD REQUEST – Murugesh

+0

Vous devrait utiliser 'postman' pour vérifier votre service web alors, donc vous pouvez savoir quel format de données accepter par votre service web – Lion