Я пробую новую версию 2.0 AFNetworking, и я получаю ошибку выше. Есть идеи, почему это происходит? Вот мой код:
NSURL *URL = [NSURL URLWithString:kJSONlink];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
op.responseSerializer = [AFJSONResponseSerializer serializer];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[[NSOperationQueue mainQueue] addOperation:op];
Я использую Xcode 5.0.
Кроме того, вот сообщение об ошибке:
Error: Error Domain=AFNetworkingErrorDomain Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo=0xda2e670 {NSErrorFailingURLKey=kJSONlink, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0xda35180> { URL: kJSONlink } { status code: 200, headers {
Connection = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Length" = 2898;
"Content-Type" = "text/html";
Date = "Tue, 01 Oct 2013 10:59:45 GMT";
"Keep-Alive" = "timeout=5, max=100";
Server = Apache;
Vary = "Accept-Encoding";
} }, NSLocalizedDescription=Request failed: unacceptable content-type: text/html}
Я просто спрятал JSON с помощью kJSONlink. Это должно вернуть JSON.
ios
afnetworking
afnetworking-2
jaytrixz
источник
источник
op.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
acceptableContentTypes
:)op.responseSerializer.acceptableContentTypes = [op.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
op.responseSerializer.acceptableContentTypes = NSSet(object: "text/html")
Установка моего
RequestOperationManager
сериализатора ответа дляHTTPResponseSerializer
устранения проблемы.Objective-C
стриж
Внесение этого изменения означает, что мне не нужно добавлять
acceptableContentTypes
к каждому моему запросу.источник
AFJSONResponseSerializer
responseSerializer
дляAFJSONResponseSerializer
.Я сделал еще один шаг к ответу / комментарию @ jaytrixz и добавил «text / html» к существующему набору типов. Таким образом, когда они фиксируют это на стороне сервера как «application / json» или «text / json», я утверждаю, что это будет работать без проблем.
источник
На стороне сервера я добавил:
в мой код .php, и это также решило проблему.
источник
if(!headers_sent() ) { header('Content-Type: application/json'); }
Это хорошее исправлениеЯ решаю эту проблему с другой точки зрения.
Я думаю, если сервер отправляет данные JSON с
Content-Type: text/html
заголовком. Это не значит, что серверный парень намеревался отправить вам html, но случайно сменил JSON. Это означает, что парня на сервере просто не заботитContent-Type
заголовок. Так что, если парню сервера не все равно, как на стороне клиента, лучше игнорироватьContent-Type
заголовок. Чтобы игнорироватьContent-Type
заголовок, проверьте вAFNetworking
Таким образом
AFJSONResponseSerializer
(по умолчанию) будет сериализовать данные JSON без проверкиContent-Type
в заголовке ответа.источник
Простой способ включить получение «текстового / простого» типа контента:
Аналогично, если вы хотите включить тип содержимого "text / html":
источник
Я попробовал ниже строки согласно ответу @Andrie, но не сработало,
так что после охоты больше, я работал вокруг, чтобы заставить его работать успешно.
Вот мой фрагмент кода.
Надеюсь, это поможет кому-то там.
источник
Это единственное, что я нашел для работы
источник
Если кто-то использует,
AFHTTPSessionManager
то можно решить эту проблему,Я подкласс,
AFHTTPSessionManager
где я делаю так,источник
В моем случае у меня нет контроля над настройками сервера, но я знаю, что ожидается «application / json» для «Content-Type». Я сделал это на стороне клиента iOS:
обратитесь к AFNetworking версии 2 ошибка типа контента
источник
Просто добавьте эту строку:
источник
У меня была похожая проблема при работе с AFNetworking из кодовой базы Swift, поэтому я просто оставляю это здесь в удаленном случае, кому-то так же не повезло, как мне, работающему в такой установке. Если да, я чувствую тебя дружище, оставайся сильным!
Операция неудачи из - за «неприемлемый контент типа», несмотря на меня фактически установив
acceptableContentTypes
сSet
содержащим значением типа контента.Думаю , я решил настроить код Swift, чтобы он был более дружественным к Objective-C :
источник
Хороший вопрос всегда имеет несколько ответов, чтобы уменьшить и помочь вам выбрать правильный ответ, здесь я добавляю свой собственный тоже. Я проверил это, и он отлично работает.
источник
источник