2014-01-14 2 views
0

Я пытаюсь назвать аханскую академию api внутри своего приложения iOS. Я использую класс AFNetworking для вызова api. Вот мой код:Khan Academy Дерево темы не работает -Объективное 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. Как вы можете видеть в приведенном выше коде, я использовал Fast Enumeration для просмотра значений и ключей.

Если это правильный синтаксический анализ. Я понятия не имею, какие ключи использовать для получения списка всех тем. Затем, когда пользователь нажимает на тему, я хочу показать список видео, тогда мне нужно получить доступ к URL-адресу загрузки видео, специфичному для mp4. Я мог бы сделать это в методе списка плейлистов, однако он устарел.

Целью этого является возможность просмотра списка, если темы сопровождаются видео тем, за которыми следует описание видео, а затем его загружаемый URL-адрес в формате mp4.

Я также получаю ошибку ошибка Хана:

Операция не может быть завершена. (Ошибка какао 3840.)

Но в некоторых случаях это работает.

Вся помощь приветствуется.

Спасибо заранее,

Joel

+0

У меня такая же проблема. Вы смотрели их api explorer? Мой единственный вариант теперь - это вручную прочитать файл и создать список, который поражает цель. Могли ли вы выйти за рамки этой проблемы? –

ответ

0

, что означает код ошибки JSON text did not start with array or object and option to allow fragments not set.

, потому что ответ JSON от сервера не является допустимым JSON для retireve массива или объекта. Попробуйте использовать

NSJSONReadingAllowFragments 

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


NSLog(@"response: %@ error: %@", json, error); 
Смежные вопросы