JSON 文本没有以数组开头 AFNetworking 错误
Posted
技术标签:
【中文标题】JSON 文本没有以数组开头 AFNetworking 错误【英文标题】:JSON text did not start with array Error with AFNetworking 【发布时间】:2014-08-01 05:07:27 【问题描述】:我正在使用下面的代码来执行 GET 请求。以相反的方式将参数发送到服务器并将数据存储在服务器中。但我得到了错误 * JSON 文本不是以数组开头 *
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @@"emails": emailid,
@"password": paswrd,
@"gender": gende,
@"firstname":name1,
@"lastname":firstname1,
@"dateofBirth":dob1,
@"Country":count
;
[manager GET:@"http://37.187.152.236:91/EmployeeSvc.svc/AddEmployee?"
parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"JSON: %@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
];
【问题讨论】:
您确定发送带有此类参数的GET
请求吗?响应必须是有效的 JSON,在服务器端似乎有些麻烦。
呃,你能发布 JSON 吗?谢谢。
【参考方案1】:
-(void) testHTTPS
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
[securityPolicy setAllowInvalidCertificates:YES];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:securityPolicy];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:[NSString stringWithFormat:@"%@", HOST] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject)
NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"%@", string);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
];
【讨论】:
【参考方案2】:你可以检查你的服务内容类型,如果是文本/html,你需要这样的代码:
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
【讨论】:
【参考方案3】:这个问题可能是由于错误的 JSON 字符串造成的。错误的 JSON 字符串是指您的 JSON 响应可能不是以预期的字符开头,即 '[' 或 ''。起始字符必须始终是上述两个字符中的任何一个。
您的 JSON 响应也有可能嵌入到某种 XML 字符串中。这发生在我身上,对我来说,这只是我解释的糟糕的 JSON 响应,我通过正确的解析解决了它。
检查此图像。这就是糟糕的 JSON 的样子。
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">
["Title":"DemoTitle","CreationDate":"06/06/2014","Description":"DemoDescription"]
</string>
如您所见,JSON 嵌入在 XML 字符串中。**强文本**另外,请检查您在此站点上的 JSON 响应:http://jsonlint.com/
这将显示您收到的 JSON 是否可用于解析。
希望这会有所帮助。
【讨论】:
【参考方案4】:这是服务器端错误,当您的服务器未响应 JSON 响应或响应 不是有效的 JSON,因为当 AF 网络库无法解析 JSON 响应时会出现此错误。 请与您的服务器端检查响应
【讨论】:
数据在服务器中正确存储..但意味着同时出现此错误 不是存储数据的问题。当他们在 API 响应中返回数据时会出现此问题。以上是关于JSON 文本没有以数组开头 AFNetworking 错误的主要内容,如果未能解决你的问题,请参考以下文章
解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项
NSDebugDescription = "JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。";
(Cocoa 错误 3840。)”(JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。)
错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项