Вопрос:

Как отправить JSON в HTTP-запрос с alamofire

json swift alamofire

40 просмотра

2 ответа

52 Репутация автора

Я все еще изучаю программирование в 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

Автор: dbenitobaldeon Источник Размещён: 10.06.2019 06:06

Ответы (2)


-1 плюса

1 Репутация автора

Попробуйте изменить JSONEncoding.defaultна URLEncoding.default?

Автор: Ly Boung Размещён: 10.06.2019 06:52

0 плюса

52 Репутация автора

Посмотрев несколько постов, я нашел решение своей проблемы, так как упомянул, что мне нужно было отправить 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
    }

Я получил пример кода по этой ссылке, где у них похожая проблема

Автор: dbenitobaldeon Размещён: 12.06.2019 09:15
Вопросы из категории :
32x32