如何通过 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