Alamofire form-data» тип параметров почтового запроса

Я пытаюсь сделать запрос с данными формы, как в Postman, однако всегда получаю ответ "Parameters is invalid" от сервера. Я пробовал с почтальоном, он работает отлично.

parameters: [String: String] = ["name": "name","email": "email"]

Вот мой код:

     let request = AF
                .request(url, method: .post, parameters: parameters, encoder: URLEncodedFormParameterEncoder.default, interceptor: self.interceptor)
                .validate()
                .responseDecodable(of: KResult<T>.self) { response in
                    switch response.result {
                    case let .success(res):
                        print(res)
                        completion(.success(res.result))
                    case let .failure(error):
                        print(error)
                        completion(.error(error))
                        }
                }

PS

Я просмотрел этот вопрос и многие другие. на этом сайте, но не решил мою проблему


person Ahmad    schedule 22.09.2020    source источник
comment
Небольшой совет: вы можете использовать POSTMAN для генерации cURL и Alamofire для генерации cURL, может быть полезно встретиться с каждым на полпути и проверить различия.. (Я объяснил это там: stackoverflow.com/questions/53637437/alamofire-with-d/ ). Поскольку мы не знаем, каким он должен быть (какие настройки POSTMAN, какие настройки документа вашего веб-сервиса?)   -  person Larme    schedule 22.09.2020
comment
спасибо за ваш ответ. Настройки документа для бэкэнда требуют данных формы с командой post, а заголовок содержит токен и ключи Content-Type. У меня есть вывод двух, но он кажется немного беспорядочным: почтальон: curl --location --request POST 'http://example.com/api/v1/customer/profile/edit/' \ --header 'token: xxxxxxxx' \ --header 'Content-Type: application/json' \ --form 'name=test' \ --form '[email protected]' \ --form 'genders=1'   -  person Ahmad    schedule 22.09.2020
comment
вот request завиток: curl -v \ -X POST \ -H "User-Agent: Demo/1.0 (com.demo.ios; build:1; iOS 13.6.0) Alamofire/5.2.2" \ -H "Accept-Language: en;q=1.0" \ -H "Accept-Encoding: br;q=1.0, gzip;q=0.9, deflate;q=0.8" \ -H "token: xxxx" \ -H "Content-Type: application/json" \ -d "[email protected]&gender=1&name=testdddd" \ "http://example.com/api/v1/customer/profile/edit/"   -  person Ahmad    schedule 22.09.2020


Ответы (1)


Решение состояло в том, чтобы установить ключ Content-Type с application/json на

application/x-www-form-urlencoded

person Ahmad    schedule 22.09.2020