与JSONRequest的AFNetworking问题

时间:2013-09-05 17:47:16

标签: ios json afnetworking

我正在使用AFNetworking从服务器获取JSON。 我的问题是,如果会话过期,服务器将使用字符串“NOSESSION”进行回复。

这是我的代码:

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

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request


                                  success: ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON){


                                      NSArray *jsonArray =[JSON valueForKey:@"posts"];

                                        //DOING SOMETHING WITH jsonArray
                                        // in case that the response is NOSESSION do something                                        



                                  }

                                  failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON){




                                       }];

[operation start];

我的问题是这是请求失败,因为响应不是字符串。 错误消息:

Failed Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.)

有没有办法知道响应字符串? (我不介意失败,我只是想知道会议何时到期)

1 个答案:

答案 0 :(得分:0)

您可以查看NSHTTPURLResponse的statusCode。当您的服务器遇到这样的错误时,他通常会返回一个statusCode。

实施例: 403:禁止 404页面不存在 500:内部服务器错误。

您可以检查HTTP statusCode是否介于200和200之间。 400. ==>没有错误

if(response.statusCode < 400 && response.statusCode > 200) {
    // do normal stuff 
} else {
    // handle error
}

您可以在此处找到有关HTTP statusCodes的更多信息: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes