我正在尝试从 URL 获取一些数据,这需要我发布 JSON 请求。它的工作原理是我得到了一些数据;只是不是我预期的数据。然后我使用 jsontest.com 来测试我的代码:
let url = NSURL(string: "http://echo.jsontest.com/")
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
do {
let params = ["echo": "abc"] as Dictionary<String, String>
//... Just make sure that 'params' is a valid JSON object
assert(NSJSONSerialization.isValidJSONObject(params))
request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.PrettyPrinted)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
} catch {
print("Error")
}
let session = NSURLSession.sharedSession()
dataTask = session.dataTaskWithRequest(request, completionHandler: {
(data: NSData?, response: NSURLResponse?, error: NSError?) in
if let httpResponse = response as? NSHTTPURLResponse where httpResponse.statusCode == 200,
let data = data {
let encodedData = NSString(data:data, encoding:NSUTF8StringEncoding)
print("encodedData = \(encodedData!)")
} else {
print("Error")
}
})
dataTask?.resume()
当我运行它时,我看到来自 jsontest.com 的以下输出:
encodedData = {"": ""}
我期望的地方
encodedData = {"echo": "abc"}
所以,我是不是没有正确理解 jsontest.com 是这样工作的,还是我做错了什么? (显然,我在使用其他 JSON 服务时遇到了类似的问题。)欢迎提出任何意见。
最佳答案
echo.jsontest.com
不适用于请求正文,但适用于请求 url,请参阅 www.jsontest.com/#echo了解详情。
关于json - JSON POST 请求中的参数在 Swift 中被忽略了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904625/