从Swift NSURLsession返回Rest API调用中的数据

时间:2016-03-01 04:16:28

标签: swift raspberry-pi nsurlsession webiopi

如何获取从Raspberry Pi传感器的rest API调用返回的数据?

我一直在使用邮递员来操纵GET和POST调用,所以我可以看到它工作并看到响应。 xcode控制台中返回的信息如下:

  

可选({URL:> http://192.168.1.83:8000/GPIO/10/value} {状态代码:200,headers {      "缓存控制" =" no-cache&#34 ;;      " Content-Length的" = 1;      "内容类型" =" text / plain&#34 ;;      日期="星期一,29二月2016 23:40:32 GMT&#34 ;;      Server =" WebIOPi / 0.7.1 / Python3.4&#34 ;;   }})

我使用的代码是由postman生成的,如下所示:

import Foundation

let headers = [
  "authorization": "Basic ***SNIP***",
  "cache-control": "no-cache",
  "postman-token": "e-4d2-2------d---9d---c0bc72a44f7e"
]

var request = NSMutableURLRequest(URL: NSURL(string:         "http://192.168.1.83:8000/GPIO/10/value")!,
                                    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) {
    print(error)
  } else {
    let httpResponse = response as? NSHTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

我想要调用GPIO引脚10返回的值,它将是0或1.如果我尝试从完成处理程序响应中获取值,则返回Nil,几乎任何其他我试着把它崩溃。

1 个答案:

答案 0 :(得分:0)

好吧想通了!我需要使用....

dispatch_async(dispatch_get_main_queue(),
                {
}

我不确定这是否是标准做法,但我可以得到我需要的东西(yipee)所以现在我可以发送一些kharma我的方式进行改变!随意评论或称我为putz,但如果有人想提供更好的技术解释,那么我可以更好地理解它以及其他可能从中受益的人