使用 AFNetworking 进行 Web 服务数据检索

Posted

技术标签:

【中文标题】使用 AFNetworking 进行 Web 服务数据检索【英文标题】:Using AFNetworking for Web Service data retrieval 【发布时间】:2014-03-26 18:09:26 【问题描述】:

在这一点上学得很快,所以我会说这是我 99% 的错误。

为我的第一个应用尝试一个简单的过程。 我想从 Web 服务获取数据并将某些内容输出到标签。 我是一名 .NET 开发人员,因此 Web 服务已完成并在浏览器中按预期返回 JSON 数据。 "GetVenuesForBrandResult":["brandID":0,"createdDate":"/Date(-62135596800000+0000)/","venueID":2,"venueName":"HMV Records"]

看了 SO 之后,决定使用 AFNetworking,2.0 版,作为 pod 加载。

所以在获取数据方面一切正常,但请回答 2 个问题; 1) Xcode 中的输出视图显示数据; GetVenuesForBrandResult=(brandID = 0;createdDate = "/Date(-62135596800000+0000)/";venueID = 2;venueName = "HMV 记录"; ); 这只是用于显示目的的 XCode5 格式吗?我的数据会是真正的 json 吗? 2)我如何消费这个? 尝试检查 isKindOfClass 是否为 nsarray 或 nsdictionary,如果条件从未满足。这让我怀疑 Q1 是问题所在。

感谢您对 Xcode 新手的帮助。


根据 Paul 的出色提示,我的代码的相关部分在这里; Web 服务链接现在是硬编码的,用于测试目的

NSString *urlstring =     @"http://hiddenurl/shopBeaconService/Service1.svc/GetVenuesForBra nd/1";
        //NSString *str2 = self.email.text;
        //NSString *str3 = @"/";
        //NSString *str4 = [self.password text];
        //NSString *urlstring = [NSString stringWithFormat:@"%@%@%@%@",str1,str2,str3,str4];

        NSURL *url = [NSURL URLWithString:urlstring];

        NSURLRequest *request = [NSURLRequest requestWithURL:url];

        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
        operation.responseSerializer = [AFJSONResponseSerializer serializer];
        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject)
         
             NSLog(@"%@",responseObject);

            // NSDictionary *item = [responseObject objectForKey:@""];
            // NSString *title = [item objectForKey:@"venueName"];

             //NSLog(@"venue= %@",title);
          failure:nil];

        [operation start];

【问题讨论】:

如果您可以更新您的问题以包含您的源代码,这将有所帮助 【参考方案1】:

使用 AFJSONResponseSerializer 时的响应对象是一个 NSDictionary。您在日志中看到的是来自 [responseObject description] 的输出 - 一种为记录目的打印描述的方法。

Ray Wenderlich 在 AFNetworking 上有一个很好的 tutorial

【讨论】:

非常感谢保罗。它为我指明了自己解决问题的正确方向。这就是你最终学习的方式!

以上是关于使用 AFNetworking 进行 Web 服务数据检索的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AFNetworking 或 STHTTPRequest 发出 SOAP Web 服务请求?

AFHTTPSessionManager 使用 AFNetworking 调用多个 Web 服务或批处理

Swift 中 AFNetworking 2.0 中的 Web 服务调用问题

如何通过 AFNetworking 和 NSUrlSession 调用 SOAP Web 服务

是否可以在 Afnetworking POST 方法中发布字典数组?

在 afnetworking 3.0 中发布请求?