如何在 Alamofire 中使用表单数据
how to use form data in Alamofire
在表单数据部分正文部分的邮递员中,当我将手机号码作为键传递并将手机号码作为 Int 值传递时,我得到了响应。但是当我在代码中这样做时,我不会得到预期的响应。
我的代码是
func fetchRegisterData(){
let url = registerApi
var mobileNumber = mobilenumberTextfield.text
let parameters = ["mobile" : mobileNumber] as [String : Any]
AF.request(url,method: .post, parameters: parameters, encoding:JSONEncoding.default).responseJSON
{ response in switch response.result {
case .success(let JSON):
print("response is :\(response)")
case .failure(_):
print("fail")
}
}
}
如果您尝试将参数作为 multipart/form-data
传递,则必须使用 Alamofire
:
中的上传方法
func fetchRegisterData() {
let parameters = ["mobile": mobilenumberTextfield.text!]
AF.upload(multipartFormData: { (multiFormData) in
for (key, value) in parameters {
multiFormData.append(Data(value.utf8), withName: key)
}
}, to: registerApi).responseJSON { response in
switch response.result {
case .success(let JSON):
print("response is :\(response)")
case .failure(_):
print("fail")
}
}
}
对于正常的 Alamofire 请求 -
在 Alamofire 请求中将值作为参数传递时。您需要了解对 API.
有效的请求类型值的数据类型
在 API 结束时,这些值正在根据某些数据类型进行解析。 API 端必须对数据类型进行一些验证。
对于 mobileNumber,它可以是 Int 或 String
1 - let parameters = ["mobile" : mobileNumber] as [String : Int]
2 - let parameters = ["mobile" : mobileNumber] as [String : String]
对于多部分表单数据请求,必须使用如下所示的内容。但是,如果您不上传任何内容,则不应使用它。要求 API 团队更改 API 和正常参数请求
Alamofire.upload(multipartFormData: { (multipartFormData) in
//Try this
multipartFormData.append(mobileNumber, withName: "mobile")
//or this
multipartFormData.append("\(String(describing: mobileNumber))".data(using: .utf8)!, withName: "mobile")
}, usingThreshold: 10 * 1024 * 1024, to: apiUrl, method: .post, headers: [:], encodingCompletion: { (encodingResult) in
switch encodingResult {
case .success(let upload, _, _):
case .failure( _):
}
})
在表单数据部分正文部分的邮递员中,当我将手机号码作为键传递并将手机号码作为 Int 值传递时,我得到了响应。但是当我在代码中这样做时,我不会得到预期的响应。
我的代码是
func fetchRegisterData(){
let url = registerApi
var mobileNumber = mobilenumberTextfield.text
let parameters = ["mobile" : mobileNumber] as [String : Any]
AF.request(url,method: .post, parameters: parameters, encoding:JSONEncoding.default).responseJSON
{ response in switch response.result {
case .success(let JSON):
print("response is :\(response)")
case .failure(_):
print("fail")
}
}
}
如果您尝试将参数作为 multipart/form-data
传递,则必须使用 Alamofire
:
func fetchRegisterData() {
let parameters = ["mobile": mobilenumberTextfield.text!]
AF.upload(multipartFormData: { (multiFormData) in
for (key, value) in parameters {
multiFormData.append(Data(value.utf8), withName: key)
}
}, to: registerApi).responseJSON { response in
switch response.result {
case .success(let JSON):
print("response is :\(response)")
case .failure(_):
print("fail")
}
}
}
对于正常的 Alamofire 请求 -
在 Alamofire 请求中将值作为参数传递时。您需要了解对 API.
有效的请求类型值的数据类型在 API 结束时,这些值正在根据某些数据类型进行解析。 API 端必须对数据类型进行一些验证。
对于 mobileNumber,它可以是 Int 或 String
1 - let parameters = ["mobile" : mobileNumber] as [String : Int]
2 - let parameters = ["mobile" : mobileNumber] as [String : String]
对于多部分表单数据请求,必须使用如下所示的内容。但是,如果您不上传任何内容,则不应使用它。要求 API 团队更改 API 和正常参数请求
Alamofire.upload(multipartFormData: { (multipartFormData) in
//Try this
multipartFormData.append(mobileNumber, withName: "mobile")
//or this
multipartFormData.append("\(String(describing: mobileNumber))".data(using: .utf8)!, withName: "mobile")
}, usingThreshold: 10 * 1024 * 1024, to: apiUrl, method: .post, headers: [:], encodingCompletion: { (encodingResult) in
switch encodingResult {
case .success(let upload, _, _):
case .failure( _):
}
})