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にアクセスしたとき、それは非常に長いリストでした。NSDictionary を 1 つしか取得していないため、JSON 解析である可能性があります。上記のコードでわかるように、Fast Enumeration を使用して値とキーを表示しました。

それが正しい解析である場合。すべてのトピックのリストを取得するためにどのキーを使用すればよいかわかりません。次に、ユーザーがビデオのリストを表示したいトピックをクリックすると、mp4 固有のビデオ ダウンロード URL にアクセスする必要があります。プレイリスト リスト メソッドで実行できましたが、廃止されました。

これの目標は、トピックの後にトピックのビデオが続き、その後にビデオの説明が続き、mp4 形式でダウンロード可能な URL のリストを表示できるようにすることです。

Error Khan というエラーも表示されます。

操作を完了できませんでした。(ココア エラー 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 に答える