Передача параметров с помощью AFNetworking в Swift

Что я сделал:-

1. Я хочу позвонить в сервисы используя AFHTTPSessionManager

2. Я хочу передать параметры только в формате JSON, используя метод POST, и я также пытался передать параметры как JSON, но я получал неверный запрос

3. Использование AFNetworking 3.0

  1. Ссылочная ссылка Конвертировать словарь в JSON в Swift

МОЙ КОД: -

     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)

            })

Что я хочу сделать: - Я хочу передать параметр в формате JSON

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

После преобразования в JSON STRING также я не получаю в формате JSON

пожалуйста, помогите мне сделать это..

1 ответ

Удалить строку ниже из кода,

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

Установите опцию на 0 вместо NSJSONWritingOptions.PrettyPrinted в сериализации JSON

и передать jsonData(как данные) в качестве параметра вместо theJSONText,

Обновить:

Попробуй вот так,

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

в этом примере ответ находится в строке, если ответ в формате json, то вы должны сериализовать его в формате json, используя nsjsonserialization вместо строки

Надеюсь, это поможет:)

Другие вопросы по тегам