尝试在 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 请求