0

我正在尝试在我的 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。正如您在上面的代码中看到的,我使用快速枚举来查看值和键。

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

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

我也收到了错误错误汗:

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

但有时它会起作用。

感谢所有帮助。

提前致谢,

乔尔

4

1 回答 1

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);
于 2014-01-15T17:02:41.563 回答