2014-01-14 30 views
0

我正在尝试调用我的iOS应用程序内的可汗学院api。我正在使用AFNetworking类来进行api调用。这里是我的代码:可汗学院专题树不工作 - 目标C和AFNetworking 2.0

  AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
manager.responseSerializer = [AFJSONResponseSerializer serializer]; 
manager.requestSerializer = [AFJSONRequestSerializer serializer]; 

[manager GET:@"http://www.khanacademy.org//api/v1/topictree" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    [activityIndicator stopAnimating]; 
    NSLog(@"no error"); 
    for (NSString *key in [responseObject allKeys]) { 
     NSLog(@"%@", [responseObject objectForKey:key]); 
    } 


} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"error"); 
    [activityIndicator stopAnimating]; 
    NSLog(@"Error Khan: %@", [error localizedDescription]); 
}]; 

当我访问http://www.khanacademy.org//api/v1/topictree这是一个很长的名单。我有一个预感,它可能是JSON解析,因为我只得到一个NSDictionary。正如你在上面的代码中看到的,我使用快速枚举来查看值和键。

如果这是正确的解析。我不知道使用哪些键来获取所有主题的列表。然后,当用户点击该主题我想要显示视频列表,然后我需要访问特定于MP4的视频下载网址。我可以在播放列表列表方法中完成,但它已被弃用。

这样做的目标是能够查看列表,如果主题视频后跟随视频说明,然后是可下载的网址以mp4格式。

我也一直得到的错误错误汗:

操作无法完成。 (可可错误3840.)

但它的一些工作时间。

所有帮助表示赞赏。

由于提前,

乔尔

+0

我遇到同样的问题。你看过他们的API浏览器?我现在唯一的选择是手动读取文件并创建一个列举的列表,哪种类型的目的是失败的。你能超越这个问题吗? –

回答

0

该错误代码装置JSON text did not start with array or object and option to allow fragments not set.

因为从服务器响应JSON不是retireve阵列或对象的有效JSON。尝试使用

NSJSONReadingAllowFragments 

NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingAllowFragments error:&error]; 


NSLog(@"response: %@ error: %@", json, error);