я использую бета-версию almofire 5 для api call.i, получая неверные параметры в ответ после передачи правильных параметров - PullRequest
0 голосов
/ 02 мая 2019

Я использую бета-версию almofire 5 и получаю ошибку неверных параметров в ответе API. Мой код:

let parameters: [String: String] = [
            "email" : "XXXXX@gmail.com",
            "first_name" : "XXX",
            "last_name" : "XXX",
            "provider": "XXX",
            "provider_id": "XXXX",
            "age" : "XXXXX"
        ]

    AF.request("https://XXXXX.app/public/api/XXXXXX", method: .post, parameters: parameters, encoding: JSONEncoding.default,, headers: ["XXXXXX" : "accesstoken"])
        .responseJSON { error in
           print(response)
    }

в чем причина? Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 02 мая 2019

Сначала нужно проверить несколько вещей.

Вы можете добавить объект «Параметры». например: -

let parameters: [Parameters] = [
        "email" : "XXXXX@gmail.com",
        "first_name" : "XXX",
        "last_name" : "XXX",
        "provider": "XXX",
        "provider_id": "XXXX",
        "age" : "XXXXX"
    ]

У вас в Hedears вам нужно сначала указать имя параметра. например: -

   ["accesstoken" : "xxxxx"]

Дважды проверьте имя вашего заголовка с помощью бэкэнда (например: - accesstoken, token и т. Д.)

Проверьте тип кодировки с помощью Backend developer. вы можете использовать (URLEncoding.httpBody, URLEncoding.queryString, JSONEncoding.default ...)

0 голосов
/ 02 мая 2019

Я проверил ваш код, вам нужно передать кодировку и заголовок, как показано ниже

encoding: URLEncoding.queryString,
headers: ["accesstoken": "XXXXXX"]

Итак, ваш окончательный запрос будет

AF.request("https://XXXXXX.app/public/api/XXXXXX", method: .post, parameters: ["user_id": "XXXXXX"], encoding: URLEncoding.queryString, headers: ["accesstoken": "XXXXXX"]).responseJSON(completionHandler: { (response) in
            switch response.result {
            case .success(_):
                print(response)

            case .failure(let error):
                print(error.localizedDescription)
            }
        })

Этот код работает и выводит следующий вывод:

SUCCESS: {
    message = "XXXXXX";
    status = 1;
}
0 голосов
/ 02 мая 2019

вы вставляете два, символ без какой-либо клавиши ввода и значение

попробуйте это

let parameters: [String: String] = [
        "email" : "XXXXX@gmail.com",
        "first_name" : "XXX",
        "last_name" : "XXX",
        "provider": "XXX",
        "provider_id": "XXXX",
        "age" : "XXXXX"
    ]

AF.request("https://XXXXX.app/public/api/XXXXXX", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: ["XXXXXX" : "accesstoken"])
    .responseJSON { error in
       print(response)
...