可汗学院主题树不起作用 - 目标C和AFNetworking 2.0

时间:2014-01-14 03:53:27

标签: objective-c json api afnetworking-2 khan-academy

我试图在我的iOS应用程序中调用khan academy api。我正在使用AFNetworking类进行api调用。这是我的代码:

           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。正如您在上面的代码中看到的,我使用Fast Enumeration来查看值和键。

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

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

我也得到错误错误Khan:

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

但有些时候它有效。

感谢所有帮助。

提前致谢,

乔尔

1 个答案:

答案 0 :(得分: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);