Передача параметров с помощью AFNetworking в Swift
Что я сделал:-
1. Я хочу позвонить в сервисы используя AFHTTPSessionManager
2. Я хочу передать параметры только в формате JSON, используя метод POST, и я также пытался передать параметры как JSON, но я получал неверный запрос
3. Использование AFNetworking 3.0
- Ссылочная ссылка Конвертировать словарь в 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
вместо строки
Надеюсь, это поможет:)