【发布时间】: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,可能有助于中途相遇并检查差异..(我在那里解释过:stackoverflow.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/"
标签: ios swift alamofire urlsession alamofire-request