Как отправить JSON в HTTP-запрос с alamofire
Я все еще изучаю программирование в Swift, я успешно использовал сервисы с Alamofire, но теперь я столкнулся со следующей проблемой, у меня есть сервис, в который я отправил 2 json в URL, и я действительно не знаю, как отправить эти данные, я видел несколько примеров, но я до сих пор не могу понять. Уже настроить политику безопасности, но проблема та же
Это мой URL {{url}} apps / Search2 / {"search": "", "user": 14, "category": 2, "цифра":0,"подгруппа":-1,"tipo":-1,"подкатегория":-1,"cantidad":0}/{"макс":5000,"Minimo":1}
и это то, что я пытался
static func loadMenuWithFilter(search : String, userId : Int, categoryId : Int ){
let menu : Parameters = ["search" : search, "user" : userId, "category" : categoryId, "numero" : 0, "subgroup" : -1, "tipo" : -1, "subcategory" : -1,"cantidad" : 0]
Alamofire.request(AlamofireConstants.MENU_FILTER, method: .get, parameters: menu, encoding: JSONEncoding.default)
.validate(statusCode: 200..<300).responseData { response in
switch response.result {
case .failure(let error):
print("error ==> \(error)")
case .success(let data):
do{
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let result = try decoder.decode(Menu.self, from: data)
print("MenuController \(result)")
} catch {
print("MenuController \(error)")
}
}
}
}
очевидно, у меня не было успеха, потому что я уверен, что это не правильный способ сделать это. Мой сервис ответ 404
2 ответа
Посмотрев несколько постов, я нашел решение своей проблемы, так как упомянул, что мне нужно было отправить json в мою цепочку URL, следует отметить, что они не были параметрами, даже до сих пор я не понимаю, почему мой вопрос был отмечен как дубликат. Но решение состояло в том, чтобы преобразовать мое переменное меню, имеющее тип Parameter, преобразовать его в строку, а затем просто объединить его с URL-адресом. После этого действия служба была успешно выполнена, поэтому не нужно было выполнять все параметры, которые я указывал в комментариях, а также конфигурацию в App Transport Security и не передавать мое переменное меню как Encoding.default
, Ничего из этого не сработало.
Это было просто сделано
ConvertJson.jsonToString(json: menu as AnyObject)
class func jsonToString(json: AnyObject) -> String{
var item : String!
do {
let data1 = try JSONSerialization.data(withJSONObject: json, options: JSONSerialization.WritingOptions.prettyPrinted) // first of all convert json to the data
let convertedString = String(data: data1, encoding: String.Encoding.utf8) // the data will be converted to the string
item = convertedString!
} catch let myJSONError {
print(myJSONError)
}
return item
}
Я получил пример кода по этой ссылке, где у них похожая проблема
Попробуйте изменить JSONEncoding.default
в URLEncoding.default
?