Вопрос по json, ios – Ошибка с AFNetworking для разбора JSON

3

У меня есть следующий код для анализа JSON:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.dropbox.com/s/qz16qyi3julygl9/facebook.json"]];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

    NSLog(@"Request Success %@",[JSON class]);

} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
    NSLog(@"Request Failure Because %@",[error userInfo]);
}];

[operation start];

но у меня есть Запрос сбоя со следующим сообщением об ошибке:

NSErrorFailingURLKey = "https://www.dropbox.com/s/qz16qyi3julygl9/facebook.json"; NSLocalizedDescription = "Expected content type {(\n \"text/json\",\n \"application/json\",\n \"text/javascript\"\n)}, got text/html";

кто-нибудь может мне помочь?

Ваш Ответ

3   ответа
6

got text/html& Quot ;. Так что просто добавьте

[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]]

Оно работает.

спасатель! Спасибо!
1

Поскольку указанная вами ссылка не содержит ссылки на файл. Это ссылка на страницу HTML, чтобы загрузить файл. Попробуйте зайти туда в браузере ...

Попробуйте эту ссылку вместо:https://dl.dropbox.com/s/qz16qyi3julygl9/facebook.json?dl=1  Никаких гарантий, что это сработает. Многие компании недовольны прямой ссылкой на файлы таким способом.

Я вместо ссылки мне скажу. но у меня снова та же ошибка. Я думаю, что эта ошибка может быть связана с NSLocalizedDescription = "Ожидаемый тип содержимого {(\ n \" text / json \ ", \ n \" application / json \ ", \ n \" text / javascript \ & quot; \ n)}, получил текст / обычный & quot ;; Благодарю. Kiattisak Anoochitarom
Тогда вам нужно найти способ ссылки непосредственно на него. Возможно, вы не сможете с DropBox. Тем не менее, это источник вашей проблемы. Возможно, вам придется перенести его на другой сервер или использовать API.
ааааа, я обнаружил, что Dropbox возвращает тип содержимого файла json - & gt; text / plain, но AFJSONRequestOperator поддерживает "text / json", "application / json", "text / javascript" Как представить тип контента в тексте / JSON? Kiattisak Anoochitarom
да, я решил эту проблему. зайдите в AFJSONRequestOperation.m и измените метод - & gt; + (NSSet *) acceptContentTypes; и добавьте MIME-тип - & gt; @ & Quot; текст / равнина & Quot; в NSSet Kiattisak Anoochitarom
Вы можете установить приемлемый тип содержимого отдельных операций, чтобы включитьtext/plain, Или, если вы используете AFNetworking 1.0RC1, вы можете сделать[AFJSONRequestOperation addAcceptableContentTypes:@"text/plain"]
2

[AFJSONRequestOperation addAcceptableContentTypes:@"text/plain"]

Выше не рекомендуется из AFNetworking 2.x. Вместо этого вы можете вызвать следующее для экземпляра AFHTTPRequestOperation следующим образом

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];

Где manager - это ваш экземпляр AFHTTPRequestOperation.

Источник:https://github.com/AFNetworking/AFNetworking/issues/1381

Кроме того, не забудьте использовать? Dl = 1 вместо? Dl = 0, чтобы текстовый / простой тип контента использовался для загрузки файла json.

Похожие вопросы