带有 NSURLSession 的 Swift 中的 HTTP 请求

Posted

技术标签:

【中文标题】带有 NSURLSession 的 Swift 中的 HTTP 请求【英文标题】:HTTP Request in Swift with NSURLSession 【发布时间】:2014-10-12 11:10:45 【问题描述】:

我正在尝试使用 NSURLSession 在带有 Swift 的 ios 应用程序中发出 HTTP 请求,但 XCode 会引发错误。我一直在搜索***和网络,我的代码与人们建议的非常相似,但由于某种原因它不起作用。我在 XCode 6.0.1 (6A317) 上。

var session = NSURLSession.sharedSession().dataTaskWithURL(NSURL(url),
    completionHandler : (data, response, error) -> Void in
        println("Done")
)
session.resume()

错误指向上面第一行:“Extra argument 'completionHandler' in call

使用尾随闭包会引发类似的错误:

var session = NSURLSession.sharedSession().dataTaskWithURL(NSURL(url)) (data, response, error) -> Void in
    println("Done")

session.resume()

错误也在第一行:“Extra argument in call

我错过了什么吗?

【问题讨论】:

【参考方案1】:

简单的获取请求是这样的:

let task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: "url_here"))  data, response, error in

task.resume()

【讨论】:

dataresponseerror 从哪里获得价值?它们是闭包捕获的输出吗?这些参数如何获得它们的值? 这些值由 NSURLSession 传递给闭包 显然!我问怎么做!你没有使用completionhandler关键字this...你只使用dataTaskWithURL(_:)这意味着你不应该收到任何参数 这只是示例代码。对于您的实际应用程序,您需要使用这些值。也许我应该在闭包内添加注释行,说明在此处使用您的回复 示例代码是什么意思?它可以像你写的那样使用。见here。您介意为您的答案添加更多解释吗?【参考方案2】:

显然我发现了错误在哪里。 问题不在于NSURLSession(),而在于NSURL()

NSURL(string: url)

错误现在消失了。

【讨论】:

以上是关于带有 NSURLSession 的 Swift 中的 HTTP 请求的主要内容,如果未能解决你的问题,请参考以下文章

NSURLSession,完成块,Swift

如何在 Swift 2 中使用 NSURLSession 的 dataTaskWithURL?

在 Swift 中使用 NSURLSession 下载文件

从 Swift 命令行程序中使用 NSURLSession

如何在 Swift 中发出 NSURLSession POST 请求

swift 如何在Swift中使用NSURLSession downloadTask顺序下载多个文件