我的session.dataTaskWithRequest方法没有返回任何数据

时间:2016-08-02 10:46:32

标签: ios json swift rest nsurlsession

我需要询问我们的Api以填充我们的主屏幕,因此我设置了一个名为RestApiManager的单独类,并添加了以下代码:

import UIKit

class RestApiManager: NSObject {
   static let sharedInstance = RestApiManager()

   let baseURL = "http://api.randomuser.me/"

   func getData() {
      let request = NSMutableURLRequest(URL: NSURL(string: baseURL)!)
      let session = NSURLSession.sharedSession()

      let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
        if data != nil {
            do {
                let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary      //:JSON = JSON(data: jsonData)
            }catch _ as NSError
            {
            }
        } 
    })
    task.resume()
   }
}

我使用的url显示为一个简单的测试,因为我知道它返回没有任何属性的数据,因为我在浏览器中测试它但每次运行我的应用程序时数据总是为零。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

由于这是一个Http请求,您需要添加NSTransportSecurity   你的info.plist。希望你已经做到了。

如果你还没有这样做。访问此Link

您还需要告诉请求方法,即.GET。

let headers = ["cache-control": "no-cache"]

var request = NSMutableURLRequest(URL: NSURL(string: "http://api.randomuser.me/")!,
                                        cachePolicy: .UseProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.HTTPMethod = "GET"
request.allHTTPHeaderFields = headers

let session = NSURLSession.sharedSession()
let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    println(error)
  } else {
    let httpResponse = response as? NSHTTPURLResponse
    println(httpResponse)
  }
})

dataTask.resume()

这对我有用,也可能适合你。