ios - AFNetworking 发送 JSON 作为 POST 请求的参数

标签 ios objective-c post afnetworking

我对同一个问题做了几个回答...但无法弄清楚这个问题..我收到了这个错误

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* +[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write'

我的代码是:

NSDictionary *loginDict=[[NSDictionary alloc] initWithObjectsAndKeys:password.text,@"password",userName.text,@"userName",nil];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:loginDict                                                           options:NSJSONWritingPrettyPrinted                                                              error:&error];
if (jsonData) {
        NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
} else {
        NSLog(@"Got an error: %@", error);
}


 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
 manager.requestSerializer = [AFJSONRequestSerializer serializer];
 [manager.requestSerializer setTimeoutInterval:20];
 [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
 [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
 manager.responseSerializer = [AFJSONResponseSerializer serializer];
 manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];

[manager POST:baseUrlLogin parameters:jsonString
         success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
}];

最佳答案

试试这个

在你的调用中直接传递loginDict并检查

manager.requestSerializer = [AFJSONRequestSerializer serializer];
/*
[manager.requestSerializer setTimeoutInterval:20];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
 manager.responseSerializer = [AFJSONResponseSerializer serializer];
 manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
 */
[manager POST:baseUrlLogin parameters: loginDict
     success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

关于ios - AFNetworking 发送 JSON 作为 POST 请求的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37110433/

相关文章:

ios - 通过iOS将实时视频流式传输到Facebook

通过 Angular 应用程序的 Node.js POST 请求返回错误 404 “not found"

ios - 解析 Hello World 警告 - 正在主线程上执行长时间运行的操作

ios - 如何获取已经实例化的UIViewController?

ios - 比较 Objective C 中的 NSString

ios - 有没有办法指定 NSNotifications 的发送者/接收者的粒度?

ios - 单击联系人按钮而不是设备的默认 View 时,在自定义 TableView Controller 中显示来自 iOS 设备的所有联系人

jquery - 我怎样才能让 jQuery post 与销售人员 WebToLead 一起工作

security - 允许获取请求但仅在我的域中?

iphone - iOS,选择哪个数据库?