尝试在 swift 2.0 中执行 GET 请求时出错

Posted

技术标签:

【中文标题】尝试在 swift 2.0 中执行 GET 请求时出错【英文标题】:Error trying to perform a GET request in swift 2.0 【发布时间】:2015-09-01 23:30:37 【问题描述】:

所以我试图在 Swift 2.0 中执行 GET 请求,在从 Swift 1.2 迁移几行代码后,我收到了这个错误,我并不真正了解如何绕过它/正确迁移它.

函数写成如下:

func performGetRequest(targetURL: NSURL!, completion: (data: NSData?, HTTPStatusCode: Int, error: NSError?) -> Void) 
    let request = NSMutableURLRequest(URL: targetURL)
    request.HTTPMethod = "GET"

    let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()

    let session = NSURLSession(configuration: sessionConfiguration)

    let task = session.dataTaskWithRequest(request, completionHandler:  (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
        dispatch_async(dispatch_get_main_queue(),  () -> Void in
            completion(data: data, HTTPStatusCode: (response as! NSHTTPURLResponse).statusCode, error: error)
        )
    )


    task.resume()

在此之后,Xcode 向我输出以下错误:

无法使用类型为“(NSMutableURLRequest, completionHandler: (NSData!, NSURLResponse!, NSError!) -> Void)”的参数列表调用“dataTaskWithRequest”

你有没有遇到过这个问题,或者知道如何解决它?

【问题讨论】:

【参考方案1】:

这段代码应该可以工作。使用 Swift,您需要让它尽可能多地决定变量的类型。请注意,我取出了你的石膏。

    func performGetRequest(targetURL: NSURL!, completion: (data: NSData?, HTTPStatusCode: Int, error: NSError?) -> Void) 
    let request = NSMutableURLRequest(URL: targetURL)
    request.HTTPMethod = "GET"

    let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()

    let session = NSURLSession(configuration: sessionConfiguration)

    let task = session.dataTaskWithRequest(request, completionHandler:  (data, response, error) -> Void in
        dispatch_async(dispatch_get_main_queue(),  () -> Void in
            completion(data: data, HTTPStatusCode: (response as! NSHTTPURLResponse).statusCode, error: error)
        )
    )


    task.resume()

【讨论】:

以上是关于尝试在 swift 2.0 中执行 GET 请求时出错的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0 POST 请求无法快速工作

对 IIS 的 GET 请求返回 Microsoft-HttpApi/2.0

Swift 中 AFNetworking 2.0 中的 Web 服务调用问题

使用 alamofire 2.0 和 Swift 2.0 的 POST 请求

使用 swift 4 发出 GET 请求在游乐场中有效,但在项目中无效

从 iOS 9 / Swift 2.0 发送 HTTP POST 请求时,PHP 服务器没有收到正确的数据