我试图在我的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。)
但有些时候它有效。
感谢所有帮助。
提前致谢,
乔尔
答案 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);