如何使用带有参数的 POST 请求来获取 JSON?我知道如何通过简单的 GET 请求来做到这一点。请求url为http://gyminyapp.azurewebsites.net/api/Gym参数查询为
{
"SearchCircle": {
"Center": {
"Latitude": 0,
"Longitude": 0
},
"Radius": 0
},
"City": "string",
"ZipCode": 0,
"Type": "string"
}
我只想使用其中的搜索圈部分,这意味着我可以忽略城市和邮政编码字段。我需要提供从当前用户位置获取的纬度/经度。我还需要将类型设置为“半径”。
对于使用 GET 版本的简单 GET 请求,我这样做。
let url = NSURL(string: "http://gyminyapp.azurewebsites.net/api/Gym")
let data = NSData(contentsOfURL: url!)
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)
for gym in json as! [AnyObject] {
gyms.append(gym)
}
} catch {
print("Error")
}
最佳答案
这是一个有效的代码,您只需输入请求参数的值即可。
let session = NSURLSession.sharedSession()
let url = "http://gyminyapp.azurewebsites.net/api/Gym"
let request = NSMutableURLRequest(URL: NSURL(string: url)!)
request.HTTPMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let params:[String: AnyObject] = ["Type" : "string","SearchCircle" : ["Radius" : 0, "Center" : ["Latitude" : 0, "Longitude" : 0]]]
do{
request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions())
let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
if let response = response {
let nsHTTPResponse = response as! NSHTTPURLResponse
let statusCode = nsHTTPResponse.statusCode
print ("status code = \(statusCode)")
}
if let error = error {
print ("\(error)")
}
if let data = data {
do{
let jsonResponse = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())
print ("data = \(jsonResponse)")
}catch _ {
print ("OOps not good JSON formatted response")
}
}
})
task.resume()
}catch _ {
print ("Oops something happened buddy")
}
然后在 if let data = data
中,您需要解析响应。我检查了响应,它是 JSON 格式的数组。
关于json - 使用带参数的 POST 请求获取 JSON 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526096/