【问题标题】:AFNetworking Send JSON as a parameter for POST requestAFNetworking 发送 JSON 作为 POST 请求的参数
【发布时间】:2016-09-03 18:33:36
【问题描述】:

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

* 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'* +[NSJSONSerialization dataWithJSONObject:options:error:]:JSON 中的顶级类型无效 写'

我的代码是:

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);
}];

【问题讨论】:

  • 只尝试这些设置AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer]; responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"]; manager.responseSerializer = responseSerializer; AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer]; manager.requestSerializer=requestSerializer;
  • @iphonic:感谢您的回复……我试过了……但同样的错误
  • 你从这个 loginDict 得到什么结果
  • @Anbu.Karthik : { 密码 = xxxxxxx;用户名 = "customer@mailinator.com"; }
  • 使用AFJSONRequestSerializer会说参数将被转换成JSON。所以你只需要直接给NSDictionary(它会自己调用NSJSONSerialization的东西)。

标签: ios objective-c post afnetworking


【解决方案1】:

试试这个

在你的通话中直接传递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);
}];

【讨论】:

  • 但是我需要在json中传递参数..问题开始了
  • ya logindict 有字典格式,直接传即可
  • 嘿,谢谢,当我评论时,它正在工作..但我没有得到原因
  • @Uday.M - 原因是您在代码中提到响应类型,如果我的回答有用,请打勾并投票赞成将来有用的答案
猜你喜欢
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
相关资源
最近更新 更多