从 AFNetworking 获取非 json 内容
Posted
技术标签:
【中文标题】从 AFNetworking 获取非 json 内容【英文标题】:Get non-json content from AFNetworking 【发布时间】:2014-04-16 01:00:21 【问题描述】:我试图简单地获取显示在结果页面中的文本,但看起来这段代码被剪断只是专门针对 JSON。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @@"userId": [loggedParent getObjectID];
[manager POST:@"http://myurl" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"JSON: %@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
];
这是我得到的错误:
Error Domain=NSCocoaErrorDomain Code=3840 “操作无法完成。(Cocoa 错误 3840。)”(JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。) UserInfo=XXXXXXXXX NSDebugDescription =JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。
如何修改我的代码以简单地读取和保存显示的文本?
【问题讨论】:
NSLog
语句显示responseObject
的输出是什么?
它永远不会到达那个点,它会直接进入带有上述消息的失败块。
您的服务器响应的内容类型是什么?该错误表明它是 JSON mime-type 但不是有效的 JSON
【参考方案1】:
我假设您使用的是 AFNetworking 2.0,但我实际上并没有使用过。但看起来您应该能够修改 AFHTTPRequestOperationManager 中的 responseSerializer 属性以接受服务器发送的任何内容类型。 AFHTTPResponseSerializer 有一个可以修改的可接受内容类型字段。
但是,鉴于您看到的错误,似乎服务器可能正在返回“application/json”内容类型,但实际上并未提供有效的 JSON 内容。
【讨论】:
这就是问题所在。它实际上期待 JSON 作为回报。我将用我使用的内容更新我的原始代码。以上是关于从 AFNetworking 获取非 json 内容的主要内容,如果未能解决你的问题,请参考以下文章
AFNetworking:从 Http 响应中获取 JSON 值
通过 AFNetworking 从服务器获取 Json 响应
AFNetworking 2.0 从故障块中的代码 400 获取 JSON