如何通过 AFNetWorking 2.0 将 JSON 格式的数据发送到 Web? [复制]

Posted

技术标签:

【中文标题】如何通过 AFNetWorking 2.0 将 JSON 格式的数据发送到 Web? [复制]【英文标题】:How to send data in JSON to web via AFNetWorking 2.0? [duplicate] 【发布时间】:2014-01-16 04:05:40 【问题描述】:

我需要发送我的登录信息并通过 POST 以 JSON 格式的数据变量传递给 Web 服务器 我试过了:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @@"email" : email, @"password" : pass ;
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager POST:URLString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) 
    NSLog(@"JSON: %@", responseObject);
 failure:
 ^(AFHTTPRequestOperation *operation, NSError *error) 
     NSLog(@"Error: %@", error); ];

但有:

Data = "<null>";
Message = "unexpected end of JSON input";
Result = fail;

【问题讨论】:

@Rob omg,所以是同一个人?在研究这个问题时,我遇到了另外两个看起来与此完全相同但标题不同的问题,所以没有多想!哇,恶心。 【参考方案1】:

您需要将字典转换为 JSON 对象。 Atm 通过参数发送字典将不起作用,因此您的错误。

考虑使用 SBJson 库,它可以将您的字典转换为 JSON 字符串对象,也可以再次将 JSON 字符串解析为字典。

SBJson framework

然后你只需像这样包含头文件:

#import "SBJson.h

然后你就可以像这样在你的字典中使用 category 方法了:

NSDictionary *params = @@"email" : email, @"password" : pass ;
NSString *jsonString = [params JSONRepresentation];
//and then you send the jsonString as the params

【讨论】:

AFNetworking(使用 requestSerializer)为他进行 JSON 转换。 AFNetworking 采用NSDictionary,而不是 JSON。 (即使他必须自己进行 JSON 转换,现在人们通常会推荐内置的 NSJSONSerialization 而不是第三方 JSON 库,除非你必须支持 ios 4.x。) @Rob 哇哦! AFNetworking 2.0 的结果?重新考虑在我客户的所有应用程序中更新 AFNetworking 库对我来说还有什么其他主要好处吗?! AFNetworking 虽然并不完美,但绝对可以简化复杂的网络代码。它有很多很棒的功能(其中这种 JSON 转换可能是最次要的功能之一)。绝对值得一试。仅供参考,AFNetworking 2.0 仅支持 iOS 6 及更高版本(如果您需要支持 iOS 5,请使用 AFNetworking 1.x)。 @Rob 我在询问 AFNetworking 2.0,我已经实现了 AFNetworking 1.x。我的所有客户端应用程序都已针对 iOS7 进行了更新。 啊。 AFNetworking 1.x 也为您完成了 JSON 转换。无论如何,从 1.x 到 2.0 的改进没有那么显着,所以我不确定您是否需要用完并立即重构您的代码。也许看看AFNetworking 2.0 Migration Guide。

以上是关于如何通过 AFNetWorking 2.0 将 JSON 格式的数据发送到 Web? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

通过 Afnetworking 2.0 从 URL 获取一半大小的 UIImage

如何使用 AFNetworking 2.0 将包含字典的数组发送到服务器?

AFNetworking 2.0 - 如何从子类 AFHTTPSessionManager 成功将响应传递给另一个类

AFNetworking 2.0 多部分/表单数据上传到 mySQL

obj-c AFNetworking 2.0 POST 请求不起作用

AFNetworking 2.0:传递标头信息