当我使用afNetworking PUT方法时,我遇到了这个错误。请帮忙。
错误域= NSCocoaErrorDomain代码= 3840“JSON文本未启动 使用数组或对象以及允许未设置片段的选项。“ UserInfo = {NSDebugDescription = JSON文本不是以数组或 允许片段未设置的对象和选项。}
这是我的代码: -
NSInteger intUserID = [[prefs stringForKey:@"user_id"] integerValue];
NSInteger intProdID = [_strProdID integerValue];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
manager.requestSerializer = serializer;
NSDictionary *params = @{@"In d":@(1),@"user_id":@(intUserID),@"product_id":@(intProdID)};
[manager PUT:@"http://api.XXX.com/api/product/wishlist_add" parameters:params success:^(NSURLSessionTask *task, id responseObject) {
}failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error Code : %@", error);
}];
答案 0 :(得分:1)
它清楚地说你发送了错误的json格式。意味着有两个 possiblty。
要么你发错了json。
或者您的服务器无法解析您的请求中的数据。
我已经面临同样的问题了。请使用下面的代码,我相信它会对你有用。
NSInteger intUserID = [[prefs stringForKey:@"user_id"] integerValue];
NSInteger intProdID = [_strProdID integerValue];
NSDictionary *params = @{@"In d":@(1),@"user_id":@(intUserID),@"product_id":@(intProdID)};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:params
options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
error:&error];
if (! jsonData) {
NSLog(@"Got an error: %@", error);
} else {
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
manager.requestSerializer = serializer;
[manager PUT:@"http://api.XXX.com/api/product/wishlist_add" parameters:jsonString success:^(NSURLSessionTask *task, id responseObject) {
}failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error Code : %@", error);
}];
}
查找here
的参考资料<强>更新强>
工作正常。请参阅下面附带的屏幕截图。
请确保user_id
和product_id
值不应为nil
答案 1 :(得分:0)
出现此错误的原因主要有两个。
服务器无法解析您的请求中的数据
发送错误的请求
首先尝试通过邮递员致电网络服务。如果您的网络服务调用成功,并且您获得了响应数据,则使用json验证程序验证json响应。 如果json响应有效,请检查您的请求。
大多数时候,问题在于我们发送给服务端的请求。
快乐编码。