更新时间:2023-01-16 22:34:17
您可以使用 NSJSONSerialization
对 JSON 进行编码,然后自己构建 NSURLRequest
.例如,在 Swift 3 中:
var request = URLRequest(url: url)request.httpMethod = "POST";request.setValue("application/json", forHTTPHeaderField: "Content-Type")让值 = [06786984572365"、06644857247565"、06649998782227"]request.httpBody = 试试!JSONSerialization.data(withJSONObject: values)AF.request(request)//或者 Alamofire 之前版本中的 `Alamofire.request(request)`.responseJSON { 响应输入切换 response.result {案例.失败(让错误):打印(错误)if let data = response.data, let responseString = String(data: data, encoding: .utf8) {打印(响应字符串)}案例.成功(让响应对象):打印(响应对象)}}
对于 Swift 2,请参阅此答案的以前的修订版.
I wonder if it's possible to directly send an array (not wrapped in a dictionary) in a POST request. Apparently the parameters
parameter should get a map of: [String: AnyObject]?
But I want to be able to send the following example json:
[
"06786984572365",
"06644857247565",
"06649998782227"
]
You can just encode the JSON with NSJSONSerialization
and then build the NSURLRequest
yourself. For example, in Swift 3:
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let values = ["06786984572365", "06644857247565", "06649998782227"]
request.httpBody = try! JSONSerialization.data(withJSONObject: values)
AF.request(request) // Or `Alamofire.request(request)` in prior versions of Alamofire
.responseJSON { response in
switch response.result {
case .failure(let error):
print(error)
if let data = response.data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
case .success(let responseObject):
print(responseObject)
}
}
For Swift 2, see previous revision of this answer.