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&gender=1&name=testdddd" \ "http://example.com/api/v1/customer/profile/edit/"
【参考方案1】:
解决方案是将Content-Type
键从application/json
设置为
application/x-www-form-urlencoded
【讨论】:
以上是关于Alamofire form-data”参数类型发布请求的主要内容,如果未能解决你的问题,请参考以下文章
如何在 multiformData 的 alamofire 中上传文件?
Swift 3 的 ObjectMapper 和 Alamofire 问题 Alamofire 4 的 Alamofire 版本
导入 Alamofire 3.4 - 没有这样的模块“Alamofire”
Alamofire:responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.inputData