Alamofire form-data”参数类型发布请求

Posted

技术标签:

【中文标题】Alamofire form-data”参数类型发布请求【英文标题】:Alamofire form-data” parameters type post request 【发布时间】:2020-09-22 17:25:11 【问题描述】:

我正在尝试像在 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

我查看了this question 和这个网站上的许多其他人,但没有解决我的问题

【问题讨论】:

小技巧,你可以使用 POSTMAN 生成cURL 和 Alamofire 生成cURL,可能有助于中途相遇并检查差异..(我在那里解释过:***.com/questions/53637437/alamofire-with-d/…) .由于我们不知道它应该是什么(POSTMAN 设置是什么,您的网络服务的文档设置是什么?) 感谢您的回复后端的文档设置它需要带有 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=test@test.com' \ --form 'genders=1' 这里是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=dsfdsfds@tes.com&amp;gender=1&amp;name=testdddd" \ "http://example.com/api/v1/customer/profile/edit/" 【参考方案1】:

解决方案是将Content-Type 键从application/json 设置为

application/x-www-form-urlencoded

【讨论】:

以上是关于Alamofire form-data”参数类型发布请求的主要内容,如果未能解决你的问题,请参考以下文章

使用 alamofire 的多部分/表单数据

如何在 multiformData 的 alamofire 中上传文件?

Swift 3 的 ObjectMapper 和 Alamofire 问题 Alamofire 4 的 Alamofire 版本

导入 Alamofire 3.4 - 没有这样的模块“Alamofire”

Alamofire:responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.inputData

出现错误:使用 Alamofire.playground 时没有这样的模块“Alamofire”