我想在
swift中发出一个GET请求来获取一些Json数据.
我尝试使用AFNetworking并且它有效,但我不知道如何返回我得到的Json.
我尝试使用AFNetworking并且它有效,但我不知道如何返回我得到的Json.
我尝试了返回,但它是在GET之前制作的,所以我什么都没得到……
func makeGet(place:String) -> String { var str:String = "" let manager = AFHTTPRequestOperationManager() manager.requestSerializer.setValue("608c6c08443c6d933576b90966b727358d0066b4",forHTTPHeaderField: "X-Auth-Token") manager.GET("http://something.com/api/\(place)",parameters: nil,success: { (operation: AFHTTPRequestOperation!,respon@R_502_6221@bject: AnyObject!) in str = "JSON: \(respon@R_502[email protected])" println(str) //print the good thing },failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in str = "Error: \(error.localizedDescription)" }) return str //return "" }
你能帮助我吗 ?
解决方法
您没有从该函数获得响应,因为GET操作是异步发生的.也就是说,执行顺序如下:
>你打电话给makeGet
> makeGet创建管理器,它会触发GET请求
> makeGet完成执行并返回一个空字符串
>(一段时间后)管理器从服务器接收一个值并执行成功或失败块.
因此,您可以访问从服务器返回的JSON的唯一一次是在步骤4中,您需要找到一种存储该值的方法,以便您可以解析它或使用它或其他任何东西.这里有多种选择 – 一种是定义在类实例上调用事件处理程序的闭包,如下所示:
class MyClass { func jsonLoaded(json: String) { println("JSON: \(json)") } func jsonFailed(error: NSError) { println("Error: \(error.localizedDescription)") } func makeGet(place:String) { let manager = AFHTTPRequestOperationManager() manager.requestSerializer.setValue("608c6c08443c6d933576b90966b727358d0066b4",forHTTPHeaderField: "X-Auth-Token") manager.GET("http://something.com/api/\(place)",respon@R_502_6221@bject: AnyObject!) in self.jsonLoaded(respon@R_502[email protected]) },error: NSError!) in self.jsonFailed(error) } ) } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。