我正在使用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.)
有没有办法知道响应字符串? (我不介意失败,我只是想知道会议何时到期)
答案 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