我正在尝试在我的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。我可以在playlist方法中这样做,但是它已经被弃用了。
这样做的目的是能够查看一个列表,如果是主题,后面是主题视频,然后是视频描述,然后是mp4格式的可下载url。
我还收到了error Error Khan:
操作无法完成。(可可错误3840。)
但有时它也会起作用。
感谢所有的帮助。
提前谢谢你,
乔尔
发布于 2014-01-16 01:02:42
该错误代码表示JSON text did not start with array or object and option to allow fragments not set.
因为来自服务器的响应json不是退休数组或对象的有效json。尝试使用
NSJSONReadingAllowFragments
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingAllowFragments error:&error];
NSLog(@"response: %@ error: %@", json, error);https://stackoverflow.com/questions/21105809
复制相似问题