首页 > 解决方案 > 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()

标签: swift

解决方案


函数 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")
    }

})

}


推荐阅读