【发布时间】:2016-12-17 05:08:56
【问题描述】:
我无法让 URLSession 在 POST 请求的正文中发送任何内容。
这是我的代码:
// Set up the request
var request = URLRequest(url: URL(string: baseURL + url)!)
request.httpMethod = "POST"
let jsonData = try JSONSerialization.data(withJSONObject: values,
options: .prettyPrinted)
request.httpBody = jsonData
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let config = URLSessionConfiguration.ephemeral
let session = URLSession(configuration: config, delegate: self, delegateQueue: OperationQueue.main)
let task = session.dataTask(with: request) { data, response, err in
if let err = err {
print(err)
}
else {
let jsondata = data!
do {
let sessionData =
try JSONSerialization.jsonObject(with: jsondata, options: .mutableLeaves)
as? Dictionary<String, String>
callback.taskComplete(response: sessionData, task: task)
}
catch {
print(error)
}
}
}
task.resume()
服务器接收到请求,但是正文为空,内容类型标头为空。我不能使用默认会话,因为我正在使用自签名证书进行开发,所以我需要我的班级成为 URLSession 委托。
我正在使用 Swift 3、XCode 8 和 iOS 10。任何帮助将不胜感激。
【问题讨论】:
-
jsonData属性中真的有数据吗? -
在 jsondata 调试您的项目或打印并检查日志
-
一切看起来都不错,唯一可能有问题的是你的
httpBody。 -
request.HTTPBody = jsonData 替换你的行。
-
@HimanshuMoradiya -
HTTPBody是 Swift 2.3。在 Swift 3 中,它是httpBody。
标签: ios swift xcode nsurlsession nsurlrequest