2015-01-29 2 views
-1

я хотел бы получить данные с сервера, закодированные в формате JSON, чтобы отобразить его, поэтому я использую afnetworking библиотеку, но я получаю ошибку здесь мой кодошибка при получении данных с сервера с помощью Afnetworking

NSURL * url =[NSURL URLWithString:@"http://software-sultan.com/alaa/image_test.php"]; 

NSURLRequest запрос * = [ Запрос NSURLRequestWURUR: url];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
operation.responseSerializer = [AFJSONResponseSerializer serializer]; 

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 

    // 3 
    array = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil]; 



} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

    // 4 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather" 
                 message:[error localizedDescription] 
                 delegate:nil 
               cancelButtonTitle:@"Ok" 
               otherButtonTitles:nil]; 
    [alertView show]; 
    NSLog(@"%@",error); 
}]; 

// 5 
[operation start]; 

здесь ошибка

Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo=0x7f920964bff0 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x7f920965cc20> { URL: http://software-sultan.com/alaa/image_test.php } { status code: 200, headers { 
Connection = "keep-alive"; 
"Content-Length" = 126781; 
"Content-Type" = "text/html"; 
Date = "Thu, 29 Jan 2015 19:00:55 GMT"; 
"Keep-Alive" = "timeout=30"; 
Server = "Apache/2"; 
"X-Powered-By" = "PHP/5.3.13"; 

}}, NSErrorFailingURLKey = http://software-sultan.

+0

Возможный дубликат [Запрос не удалось: недопустимый тип содержимого: текст/html с использованием AFNetworking 2.0] (http://stackoverflow.com/questions/19114623/request-failed-unacceptable-content-type-text-html-using -afnetworking-2-0) – glyuck

ответ

0

Похоже, вы пытаетесь разобрать ответ JSON с помощью AFJSONResponseSerializer, но веб-сервер отправляет text/html в качестве типа контента. Ответы JSON обычно подаются с заголовком Content-Type: application/json.

Кроме того, если ответ был успешно проанализирован как JSON, то responseObject, указанный в качестве второго параметра вашего блока завершения, уже будет действительным NSArray, содержащим ваши данные. Поэтому нет необходимости создавать его снова, используя NSJSONSerialization.

+0

http://software-sultan.com/alaa/image_test.php Если вы откроете ссылку, вы увидите данные в форме json – user3045517

+0

Конечно, но только потому, что вы возвращаете данные в качестве допустимого формата JSON, doesn 't означает, что сериализатор ответа JSON сможет его проанализировать. Он должен искать 'Content-Type', прежде чем пытаться проанализировать данные, в результате чего вы получите ошибку. Я попытался бы установить ответ как «application/json», чтобы убедиться, что это позволяет сериализатору выполнять свою работу. –

+0

Кроме того, возможно, удаление «responseSerializer» (путем установки его на «nil») может помочь AFNetworking получить ваш ответ как чистые данные, которые вы могли бы проанализировать с помощью 'NSJSONSerialization'. –

Смежные вопросы