Я пытаюсь быстро отправить запрос на почту с помощью Alamofire.
мое тело json выглядит так:
{
"IdQuiz" : 102,
"IdUser" : "iosclient",
"User" : "iosclient",
"List":[
{
"IdQuestion" : 5,
"IdProposition": 2,
"Time" : 32
},
{
"IdQuestion" : 4,
"IdProposition": 3,
"Time" : 9
}
]
}
Я пытаюсь сделать let
list
с NSDictionnary, который выглядит так:
[[Time: 30, IdQuestion: 6510, idProposition: 10], [Time: 30, IdQuestion: 8284, idProposition: 10]]
и мой запрос с использованием Alamofire выглядит так:
Alamofire.request(.POST, "http://myserver.com", parameters: ["IdQuiz":"102","IdUser":"iOSclient","User":"iOSClient","List":list ], encoding: .JSON)
.response { request, response, data, error in
let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding)
println(dataString)
}
В запросе есть ошибка, и я считаю, что проблема в списке словарей, потому что, если я сделаю запрос без списка, он будет работать нормально, так что есть идеи?
Я пробовал предложенное решение, но столкнулся с той же проблемой:
let json = ["List":list,"IdQuiz":"102","IdUser":"iOSclient","UserInformation":"iOSClient"]
let data = NSJSONSerialization.dataWithJSONObject(json, options: NSJSONWritingOptions.PrettyPrinted,error:nil)
let jsons = NSString(data: data!, encoding: NSUTF8StringEncoding)
Alamofire.request(.POST, "http://myserver.com", parameters: [:], encoding: .Custom({
(convertible, params) in
var mutableRequest = convertible.URLRequest.copy() as! NSMutableURLRequest
mutableRequest.HTTPBody = jsons!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
return (mutableRequest, nil)
}))
.response { request, response, data, error in
let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding)
println(dataString)
}
Ответы:
Вы близко. Неправильное форматирование словаря параметров. Вам следует попробовать следующее:
Надеюсь, это решило вашу проблему. Если нет, ответьте, и я соответствующим образом скорректирую свой ответ.
источник
nil
егоAnyObject
?Если вы используете Alamofire v4.0 +, то принятый ответ будет выглядеть так:
источник
JSONEncoding
на устранение неоднозначности типа, который сделал это за меня.Мне не нравится какой - либо из других ответов до сих пор ( за исключением , пожалуй, одного по SwiftDeveloper), потому что они либо требуют , чтобы вы десериализации ваш JSON, только для того , чтобы сериализовать снова, или забота о структуре самого JSON.
Правильный ответ был отправлен afrodev в другом вопросе. Вы должны пойти и проголосовать за него.
Ниже представлена только моя адаптация с некоторыми незначительными изменениями (в основном явная кодировка UTF-8).
источник
toJSONString
не является нативным методом, так что это, по сути, черный ящик, который вы должны реализовать.json
Во-вторых , ответ, который вы даете, предоставляет переменную, которая начинается как строка json, реально никто не имеет параметров таким образом, если вы не конвертируете и сохраняете их локально таким образом.toJSONString
в моем ответе нет, 2) «реально ни у кого нет таких параметров» - это делает много предположений; JSON может поступать из совершенно разных частей приложения, не связанных с выполнением запроса и о которых сетевой код ничего не знает.Xcode 8.X, Swift 3.X
Простота использования;
источник
Принятый ответ в Xcode 11 - Swift 5 - Alamofire 5.0
источник
Если вы используете,
swift4
аAlamofire v4.0
затем принятый код будет выглядеть так:источник
Я немного отредактировал ответ SwiftDeveloper , потому что он не работал у меня. Я также добавил проверку Alamofire.
источник
Я хотел бы сообщить о некоторых изменениях. Теперь вы можете получить доступ к запросу, JSON, ошибке из объекта ответа.
источник
источник
Вот как я создал запрос Http POST с Swift, которому нужны параметры с кодировкой Json и с заголовками.
Создан клиент API BKCAPIClient как общий экземпляр, который будет включать все типы запросов, такие как POST, GET, PUT, DELETE и т. Д.
Созданный класс Operation, который содержит все данные, необходимые для конкретного запроса, а также содержит логику синтаксического анализа внутри блока завершения.
Вызов API в любом контроллере представления, где нам нужны эти данные
источник
источник
Если кому-то интересно, как поступать с моделями и прочим, см. Ниже
источник
Alamofire ~ 5.2 и Swift 5
Вы можете структурировать свои данные параметров
Работа с поддельным json api
источник