swift - Swift,如何从 HTTP 请求返回数据?
问题描述
我发现学习 swift 或多或少地难以忍受做任何事情,在 Python 中可以在一行中完成的事情在 swift 中变成了一项完整的任务。
我正在尝试从 http 请求返回数据,但找不到解释如何的单一来源。我能找到的唯一东西是打印数据而不是返回它,或者作为字典(来自使用 JSONSerialization)或简单地作为字符串。
let url = URL(string: "url")!
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if let error = error {
print("error: \(error)")
} else {
if let response = response as? HTTPURLResponse {
print("statusCode: \(response.statusCode)")
}
if let data = data, let dataString = String(data: data, encoding: .utf8) {
print("data: \(dataString)")
}
}
}
task.resume()
解决方案
函数 makePostRequest(){
let urlPath: String = "http://www.swiftdeveloperblog.com/http-post-example- script/"
var url: NSURL = NSURL(string: urlPath)!
var request: NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
var stringPost="firstName=James&lastName=Bond" // Key and Value
let data = stringPost.dataUsingEncoding(NSUTF8StringEncoding)
request.timeoutInterval = 60
request.HTTPBody=data
request.HTTPShouldHandleCookies=false
let queue:NSOperationQueue = NSOperationQueue()
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil
let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary
if (jsonResult != nil) {
// Success
println(jsonResult)
let message = jsonResult["Message"] as! NSString
println(message)
}else {
// Failed
println("Failed")
}
})
}
推荐阅读
- python - 在Python中将矩阵的列乘以不同的数字
- vim - 如何从我上次进入的位置打开文件
- pyinstaller - 执行 PyInstaller .exe 文件时出现 OSError - “找不到或加载 spatialindex_c-64.dll”
- javascript - 我该如何解决这个错误?违规:组件`path`的视图配置getter回调必须是一个函数
- c++ - 如何在此 c++ 程序中给出大于 10000000 的值时解决段错误?
- grpc - 在谷歌 TTS(python)中使用同一客户端发送多个连续的“synthesize_speech”请求时出现“没有删除流”错误
- visual-studio-code - 如何在 vscode 中使用键盘查找/替换文件
- html - HTML 将 tabindex 与标签单击集成
- javascript - 按子对象中的键和/或值过滤对象数组
- libreoffice - 根据文档,Libre office Calc OR 无法正常工作