Alamofire post 请求:
Alamofire post request:
你好 我在 swift 中阅读了很多关于 alamofire post 请求的问题和答案,但无法得到我真正想要的答案我真正想要的是:
Post 使用 URLRequest 和 URLSession 的请求我必须在 URLRequest 中分配一个 HTTPBody 这个主体可以是一个符合 encodable 或 codable 的结构的实例但是在 alamofire post 请求如何发送数据?
将要发送的数据放在哪里?
谢谢,不要将其标记为重复我已经阅读了很多 posts 但没有找到答案。
Alamofire 有很好的文档 here。这说明了关于传递可编码参数的全部内容。这是一个例子:
AF.request("myRequestUrl", method: .post, parameters: encodableModel).responseString { print([=10=]) }
使用Alamofire实现请求的方式有很多种,这里举一个简单的例子:
首先,您是否必须根据 API 和 headers 创建参数 URL:
let parameters = [
"username": "foo",
"password": "123456"
]
let url = "https://httpbin.org/post"
static private var headers: HTTPHeaders {
get {
return [
"Authorization" : "Bearer \(Session.current.bearerToken ?? "")"
]
}
}
因此您从 Alamofire 调用该函数并传递您的数据:
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON {
response in
switch (response.result) {
case .success:
print(response)
break
case .failure:
print(Error.self)
}
}
}
:)
// Create url request
// Get your instance of codable struct model
do {
let encoder = JSONEncoder()
let data = try encoder.encode(yourCodableObject)
your_urlRequest.httpBody = data
} catch {
}
let apiEndpoint: String = "https://xyz"
let headers = ["Content-Type" : "application/json","Variable":"ABC"
var param = [String: Any?]()
param["Command"] = "ResetPin"
var cellNo = MobileNumberField.text
param["Data"] = jsonToString(json: ["CELLNO":"cellNo"])
AF.request(URL(string: apiEndpoint)!, method: .post, parameters: param as Parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response) in
switch response.result {
case .success(let value):
if let json = value as? [String: Any] {
let data = JSON(json)
if data["Status"].stringValue == "0" {
let alert = UIAlertController(title: "Error", message: data["Message"].stringValue, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .destructive) { _ in
return
})
self.present(alert, animated: true)
}
else {
let jsonStr = data["Data"]
let dict = convertToDictionary(text: jsonStr!)
if let dictMain = dict {
if (JSON(dictMain)["ISADMIN"].stringValue == "YES"){
//Is Admin
self.performSegue(withIdentifier:"AdminFoundSegue", sender: self)
} else {
//Is not Admin
self.performSegue(withIdentifier:"ConnectYourAccountSegue", sender: self)
}
}
}
}
case .failure(let error):
print(error)
let alert = UIAlertController(title: "Error", message: error.localizedDescription, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .destructive) { _ in
return
})
self.present(alert, animated: true)
}
}
你好 我在 swift 中阅读了很多关于 alamofire post 请求的问题和答案,但无法得到我真正想要的答案我真正想要的是: Post 使用 URLRequest 和 URLSession 的请求我必须在 URLRequest 中分配一个 HTTPBody 这个主体可以是一个符合 encodable 或 codable 的结构的实例但是在 alamofire post 请求如何发送数据? 将要发送的数据放在哪里? 谢谢,不要将其标记为重复我已经阅读了很多 posts 但没有找到答案。
Alamofire 有很好的文档 here。这说明了关于传递可编码参数的全部内容。这是一个例子:
AF.request("myRequestUrl", method: .post, parameters: encodableModel).responseString { print([=10=]) }
使用Alamofire实现请求的方式有很多种,这里举一个简单的例子:
首先,您是否必须根据 API 和 headers 创建参数 URL:
let parameters = [
"username": "foo",
"password": "123456"
]
let url = "https://httpbin.org/post"
static private var headers: HTTPHeaders {
get {
return [
"Authorization" : "Bearer \(Session.current.bearerToken ?? "")"
]
}
}
因此您从 Alamofire 调用该函数并传递您的数据:
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON {
response in
switch (response.result) {
case .success:
print(response)
break
case .failure:
print(Error.self)
}
}
}
:)
// Create url request
// Get your instance of codable struct model
do {
let encoder = JSONEncoder()
let data = try encoder.encode(yourCodableObject)
your_urlRequest.httpBody = data
} catch {
}
let apiEndpoint: String = "https://xyz"
let headers = ["Content-Type" : "application/json","Variable":"ABC"
var param = [String: Any?]()
param["Command"] = "ResetPin"
var cellNo = MobileNumberField.text
param["Data"] = jsonToString(json: ["CELLNO":"cellNo"])
AF.request(URL(string: apiEndpoint)!, method: .post, parameters: param as Parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response) in
switch response.result {
case .success(let value):
if let json = value as? [String: Any] {
let data = JSON(json)
if data["Status"].stringValue == "0" {
let alert = UIAlertController(title: "Error", message: data["Message"].stringValue, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .destructive) { _ in
return
})
self.present(alert, animated: true)
}
else {
let jsonStr = data["Data"]
let dict = convertToDictionary(text: jsonStr!)
if let dictMain = dict {
if (JSON(dictMain)["ISADMIN"].stringValue == "YES"){
//Is Admin
self.performSegue(withIdentifier:"AdminFoundSegue", sender: self)
} else {
//Is not Admin
self.performSegue(withIdentifier:"ConnectYourAccountSegue", sender: self)
}
}
}
}
case .failure(let error):
print(error)
let alert = UIAlertController(title: "Error", message: error.localizedDescription, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .destructive) { _ in
return
})
self.present(alert, animated: true)
}
}