AFNetworking POST 崩溃

Posted

技术标签:

【中文标题】AFNetworking POST 崩溃【英文标题】:Crashes on AFNetworking POST 【发布时间】:2016-03-04 14:24:06 【问题描述】:

我正在尝试将 json 字符串作为 NSString 发布。但是在发布请求时,Xcode 崩溃并打印:“JSON 写入中的***类型无效”。这是我的代码:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];


[manager POST:signupBaseURLString parameters:myJSONStringObject success:^(AFHTTPRequestOperation *operation, id responseObject) 
    NSLog(@"responseObject is %@", responseObject);
 failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    NSLog(@"post request error is %@", error);
];

【问题讨论】:

你的 jsonstring 对象有效吗? 看到一次***.com/questions/27166711/… 如何创建 myJsonStringObject。您不必将其设为字符串,因为请求序列化程序会为您执行此操作。 我的 json(作为字典)是一个有效的 json 对象。但是,myJSONStringObject 当然不是有效的 json,因为它是 NSString 格式。 服务器,我正在发送数据,期待 json 作为字符串格式,这就是我使用字符串作为参数的原因。你能帮我把 NSString 发送到服务器吗?请求序列化程序似乎没有使它成为一个字符串,或者我做错了什么,请谁能帮帮我? 【参考方案1】:

参数应该是 NSDictionary,而不是字符串。我假设myJSONStringObject 是一个字符串。如果字符串是 JSON 对象的编码,则需要将其转回字典,或者最好使用您编码的字典。

【讨论】:

是的,它是字符串,因为我需要用字符串格式发送。 parameters 需要是 NSDictionary,而不是字符串。阅读文档:cocoadocs.org/docsets/AFNetworking/2.0.0/Classes/…:

以上是关于AFNetworking POST 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 与 iOS 4.3 不兼容

使用GCD中的dispatch_semaphore(信号量)处理一个界面多个请求(把握AFNet网络请求完成的正确时机)

可能是因为 afnetworking 而崩溃了

AFNetworking GET 3.0 崩溃

AFNetworking请求中含有中文时程序崩溃

无法发出 POST 请求 - AFNetworking