Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么datataskwithurl的数据对象接收空值?_Ios_Json_Nsurlsession_Nsjsonserialization_Jsonresponse - Fatal编程技术网

Ios 为什么datataskwithurl的数据对象接收空值?

Ios 为什么datataskwithurl的数据对象接收空值?,ios,json,nsurlsession,nsjsonserialization,jsonresponse,Ios,Json,Nsurlsession,Nsjsonserialization,Jsonresponse,我想从我的后端获取一些数据到我的应用程序。我编写了以下代码: NSURL *url = [NSURL URLWithString:@"http://domain.com/books"]; config = [NSURLSessionConfiguration defaultSessionConfiguration]; //curl -H 'Authorization: Token token="replace-with-token"' [config setHTTPAdd

我想从我的后端获取一些数据到我的应用程序。我编写了以下代码:

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];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog("%@", string);
我检查了response对象,得到了200个,看来fetch请求进行得很顺利。但是对于请求的数据,我得到了空值。我认为解析数据时出错了。这是一个我希望收到的示例。我还将该示例放入JSON查看器。它在第一面显示类似{}的内容,但当我打开它时,它正确地显示了数据

[
     {
        "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";
} }

您收到的响应不是JSON格式。您可以使用以下代码进行检查:

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];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog("%@", string);

我也试过这个。我一直得到这个[]作为响应。您是否将上面的代码放在完成处理程序块中?我尝试了你的代码,收到了一个HTML页面,其中包含信息:“你请求的页面已不存在或暂时不可用。”是的,我收到了。谢谢你检查我的代码,这是我的代码和我的回答的一个例子。这是我在代码中使用的正确url:“是的,现在的响应只有[]。你的代码没有问题,正如我所看到的,可能参数不对。在将请求添加到代码之前,您可以通过在线服务(例如hurl.it)检查您的请求是否正常。感谢您提及在线服务,它看起来非常有用。看来我的要求和它的参数都很好。