JSON文本不以数组或对象和选项开头,以允许未设置片段

Bir*_*dra 8 json web-services objective-c ios

嗨,我是iOS的新手,我正在尝试使用JSON从Web服务获得响应,但发生以下错误.请帮我解决一下.

Error Domain = NSCocoaErrorDomain Code = 3840"操作无法完成.(Cocoa error 3840.)"(JSON文本没有以数组或对象开头,并且选项允许未设置片段.)UserInfo = 0x7fd30bee0f70 {NSDebugDescription = JSON text没有从数组或对象和选项开始,以允许未设置片段.,NSUnderlyingError = 0x7fd30bede7b0"请求失败:内部服务器错误(500)"}

-(void)loadFeedWithOffset:(NSInteger)Offset Limit:(NSInteger)Limit
{
     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

//      [manager.requestSerializer setValue:@"application/json;                 text/html" forHTTPHeaderField:@"Accept"];
//      [manager.requestSerializer setValue:@"application/json;     text/html; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    [params setValue:[[NSUserDefaults standardUserDefaults] objectForKey:@"UID"] forKey:@"user_id"];
    [params setValue:[NSString stringWithFormat:@"%ld",(long)Offset] forKey:@"offset"];
    [params setValue:[NSString stringWithFormat:@"%ld",(long)Limit] forKey:@"limit"];
    [params setValue:[NSString stringWithFormat:@"%d",[AppDelegate sharedAppDelegate].intPostType] forKey:@"post_type"];

    [manager POST:[NSString stringWithFormat:@"%@webservices/post/load", API_URL] parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject)
 {

     NSLog(@"JSON: %@", responseObject);
     if ([[responseObject objectForKey:@"status"] isEqualToString:@"fail"])
     {
         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:[responseObject objectForKey:@"message"] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
         [alert show];
         alert = nil;
     }
     else
     {
         if ([[responseObject objectForKey:@"feed"] count] > 0)
         {
             isOver = FALSE;
             [arrFeed addObjectsFromArray:[responseObject objectForKey:@"feed"]];
             searchedDataArray = [NSMutableArray  arrayWithArray:arrFeed];
             //searchedDataArray=arrFeed;
             [tblMenuDetail reloadData];
         }
         else
         {
             isOver = TRUE;
         }
         [self performSelector:@selector(doneLoadingTableViewData) withObject:self afterDelay:1.0];
     }
     [[AppDelegate sharedAppDelegate] hideProgress];
 } failure:^(AFHTTPRequestOperation *operation, NSError *error)
 {
     [[AppDelegate sharedAppDelegate] hideProgress];
     NSLog(@"Error: %@", error);
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
     [alert show];
     alert = nil;
 }];
}
Run Code Online (Sandbox Code Playgroud)

小智 8

这通常是一个后端相关的问题,json没有很好的格式化,在客户端没有任何关于它的事情....

虽然有时会在将错误的参数发送到后端时发生这种情况,因此您可以检查所有参数是否正确(类型和值)


Sre*_*ith 2

尝试设置content-typejson

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];