[英]How to call rest web service from swift
我正在尝试遵循一个教程-失败了,并且在堆栈上发现了一些代码,因此在Swift中进行REST API调用决定改为尝试这种方法。 以下代码是复制并粘贴(我知道!),但更改了URL,但我似乎在控制台上而不是JSON上显示了错误-错误在很大程度上没有帮助0x0000000000000000
JSON似乎会打印到浏览器窗口中,因此我不完全确定这种方法可能出什么问题? 请问有人可以提供一些帮助,为什么这可能不起作用?
谢谢
var url : String = "http://www.flickr.com/services/rest/?method=flickr.test.echo&format=json&api_key=d6e995dee02d313a28ed4b799a09b869"
var request : NSMutableURLRequest = NSMutableURLRequest()
request.URL = NSURL(string: url)
request.HTTPMethod = "GET"
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil
let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary
if (jsonResult != nil) {
println(jsonResult);
} else {
// couldn't load JSON, look at error
println(error);
}
})
问题是调用以JSONP而不是JSON返回数据
如果使用正确的JSON(例如http://ip.jsontest.com)进行测试,您的代码就可以正常运行
要使其与Flickr一起使用,您必须对其进行如下修改:
var json_str:NSString = NSString(data: data, encoding: NSUTF8StringEncoding)
json_str = json_str.substringFromIndex(14)
json_str = json_str.substringToIndex(json_str.length-1)
let new_data:NSData = json_str.dataUsingEncoding(NSUTF8StringEncoding)!
var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil
let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(new_data, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary
if (jsonResult != nil) {
println(jsonResult);
} else {
// couldn't load JSON, look at error
println(error);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.