【发布时间】:2017-05-20 19:08:36
【问题描述】:
这是发出 post 请求,但它将 json 视为字符串,在服务器上显示为 (stuff): ''。我不知道如何解决它。 (当我用python实现这个时,它是完美的。)
let json: [String: Any] = ["id": 1, "checksum": "hey"]
let jsonData = try? JSONSerialization.data(withJSONObject: json)
/*print(jsonData!)
let parsedData = try? JSONSerialization.jsonObject(with: jsonData!, options: [])
print(parsedData!)*/
//print(parsedData)
// create post request
let url = URL(string: "http://10.240.81.23:3000/updateProfile")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
// insert json data to the request
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print(error?.localizedDescription ?? "No data")
return
}
let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
if let responseJSON = responseJSON as? [String: Any] {
print(responseJSON)
}
}
task.resume()
【问题讨论】:
-
什么将 JSON 视为字符串?你想问的问题是什么?是否有特定的线路给您带来麻烦?
-
也许 AFNetworking 适合您? github.com/AFNetworking/AFNetworking。所以 responseJSON 对象最终是一个字符串?
-
至少你必须在header中指定Content-Type,否则服务器不知道如何处理你的请求