2015-07-10 4 views
0

Я хочу получить некоторые данные из моего бэкэнда в свое приложение. Я написал следующий код:Почему объект данных datataskwithurl получает нуль?

NSURL *url = [NSURL URLWithString:@"http://domain.com/books"]; 
    config = [NSURLSessionConfiguration defaultSessionConfiguration]; 
    //curl -H 'Authorization: Token token="replace-with-token"' 
    [config setHTTPAdditionalHeaders:@{@"Authorization":@"Token token=\"7601ea35c7eaf067fefe\""}]; 
    NSURLSession *session = [NSURLSession sessionWithConfiguration:config]; 
    [[session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
     NSError *error1=nil; 
     NSArray *JSON=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error1]; 
    } 

     ] resume]; 

Я проверяю объект ответа, и у меня есть 200, кажется, запрос на выбор прошел хорошо. но я получил нулевое значение для запрашиваемых данных. Я думаю, что sth от анализа данных пошло не так. вот пример того, что я ожидал получить. Я также поставил пример в JSON viewer http://jsonviewer.stack.hu. он показывает sth как {} с первой стороны, но когда я его открываю, он корректно отображает данные.

[ 
    { 
     "id": 437, 
     "name": "alchemist", 
     "description": "story book.", 
     "favorite": false, 
     "difficulty": 3, 
     "created_at": "2014-09-29T10:43:00.072Z", 
     "updated_at": "2014-11-26T11:53:58.451Z", 
     "photo": { 
      "url": "https://amazon-/uploads/books/photo/437/alchemist.jpg", 
      "thumbnail_url": "https://amazon-books.amazonaws.com/uploads/recipe/photo/437/alchemist-PC.jpg" 
     } 
     } 
    ] 

Кто-нибудь знает причину? Это обновление для моего вопроса, то здесь это nsurlresponse объект:

{ status code: 200, headers { 
    "Cache-Control" = "max-age=0, private, must-revalidate"; 
    Connection = "keep-alive"; 
    "Content-Length" = 2; 
    "Content-Type" = "application/json; charset=utf-8"; 
    Date = "Sat, 11 Jul 2015 15:26:58 GMT"; 
    Etag = "\"d751713988987e9331980363e24189ce\""; 
    Server = "WEBrick/1.3.1 (Ruby/2.0.0/2015-04-13)"; 
    Via = "1.1 vegur"; 
    "X-Content-Type-Options" = nosniff; 
    "X-Frame-Options" = SAMEORIGIN; 
    "X-Request-Id" = "8e1abb2e-2526-4d10-99e7-d553b51457fd"; 
    "X-Runtime" = "0.125302"; 
    "X-Ua-Compatible" = "chrome=1"; 
    "X-Xss-Protection" = "1; mode=block"; 
} } 

ответ

0

Ответ вы получили не в формате JSON. Вы можете проверить его следующим кодом:

NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
NSLog("%@", string); 
+0

Я тоже пробовал это. Я продолжаю получать это [] в качестве ответа. – MKH

+0

Вы разместили код выше в блоке обработчика завершения? Я попробовал ваш код и получил HTML-страницу с информацией: «Запрошенная вами страница больше не существует или временно недоступна». –

+0

Да, да. спасибо за проверку моего кода. Это пример моего кода и моего ответа. здесь это правильный url, который я использую в своем коде: «http://hyper-recipes.herokuapp.com/recipes» – MKH