【问题标题】:AFNetworking returning invalid response objectAFNetworking 返回无效的响应对象
【发布时间】:2014-09-27 06:41:32
【问题描述】:

我正在考虑在我的一个项目中使用 AFNetworking。但我有一个问题。

代码如下:

        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  //      manager.responseSerializer = [AFJSONResponseSerializer serializer];
        [manager GET:completeUrlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSLog(@"%@", responseObject);


        } failure:nil];

问题是 respose 对象。它是一个字典,里面只有一个值。该值显示为 NSObject!这实际上应该是一个包含多个键/值对的 NSDictionary。

这是原始的 json:

{

    "signInResponse": {
        "userName": "971777771554300",
        "duration": 315360000000,
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "userId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "idleTimeout": 2592000000
    }

}

为什么解析器会失败?另外我想指出,url 不是以“.json”结尾的,因为它是动态创建的。

另一个小问题:几个响应返回 json 对象,其中的键需要在 响应字典的格式为“@importantKey”或“#key”。我记得有些解析器无法在响应中返回这样的键,这是 AFNetworking 的问题吗?

【问题讨论】:

  • 如何测试响应的类?你提到了一个解析器,但我没有看到任何解析器代码。
  • 我在XCOde的调试窗口中看到了。据我了解,AFNetworking 同时进行 json 请求和解析..
  • 将响应转换成字典:_yourNSDictionary = (NSDictionary *)responseObject;
  • 为什么注释掉设置序列化程序?这是一个必要的步骤。

标签: ios json afnetworking afnetworking-2


【解决方案1】:

如果你使用 alamofire,这个小 sn-p 可以提供帮助,也许你需要像这样进行转换:

var innerData = data!["signInResponse"]!!
var innerData2 = innerData[0] 
var DataDict = (innerData2 as! NSDictionary) as Dictionary
self.userName   = DataDict["userName"]! as! String

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2012-04-26
    相关资源
    最近更新 更多