【问题标题】:Using AFNetworking to process multiple JSON responses for a single request使用 AFNetworking 处理单个请求的多个 JSON 响应
【发布时间】:2013-05-10 10:50:46
【问题描述】:

我正在尝试找到一种方法来打开与 Web 服务的连接,并让该服务根据需要向下发送 JSON 对象。

假设我向某服务请求了 20 个配置文件。服务不会等待服务构建所有 20 个配置文件,而是构建第一个配置文件并将其返回给客户端,直到创建所有 20 个配置文件。

我一直在使用 AFNetworking,并希望继续使用它。最终,如果需要添加此组件,我想将其贡献回社区。​​p>

有人对解决此类问题有任何想法吗?现在我有一个服务每隔几秒推送一次 JSON 来进行测试。

【问题讨论】:

    标签: ios json afnetworking


    【解决方案1】:

    AFNetworking 支持使用AFHTTPClient -enqueueBatchOfHTTPRequestOperations:progressBlock:completionBlock: 批量请求。

    您可以使用此方法返回每个单独的操作,以及批处理中的所有操作何时完成。

    【讨论】:

      【解决方案2】:

      一些想法:

      1. 如果你想打开一个连接并响应来自服务器的传输,基于套接字的模型似乎是有意义的。有关示例,请参阅 Ray Wenderlich 的 How To Create A Socket Based iPhone App and Server(服务器端的东西可能会根据您的服务器架构而改变,但它为您提供了一个示例)。但是 AFNetworking 是基于 NSURLConnection 框架而不是套接字框架构建的,因此如果您想将套接字类集成到该框架中,将涉及大量工作。

      2. 另一个 iOS 特定模型是使用 Apple 的推送通知服务(请参阅 Local and Push Notification Programming Guide 的推送相关部分)。

      3. 第三种方法是保留拉机制,但如果您正在寻找一种以非串行方式使用多个提要的方法,则可以创建多个 AFURLConnectionOperation(或适当的子类) 操作,并同时提交它们(您可能希望将队列中的maxConcurrentOperations 限制为 4 或 5,因为 iOS 只能有这么多并发网络操作)。通过同时发布这些,您可以减轻网络延迟导致的许多延迟。如果您采用这种方法,可能需要注意线程安全,但它可能比上述两种技术更容易。

      【讨论】:

      • 优秀。我很感激这些想法!
      【解决方案3】:

      这听起来像是一个套接字(或网络套接字,任何更简单的)的工作。

      我不相信 AF 对此有支持。这可以在 NSURLConnection 的 didRecieveData 方法中实现。每次收到一条数据时都会触发此事件,因此您可以从那时开始进行解析和消息传递。不幸的是,我想不出一个非常干净的方法来实现它。

      也许更好的方法是通过分页式技术处理适当的请求。您可以使用 1/page 请求配置文件的第 1 页,然后请求第 2 页等。然后您可以控制流程,即,如果您想并行请求全部或请求一个,然后依次请求下一个。这将减少实施工作,并且(在我看来)会更清洁和更易于维护。

      【讨论】:

      • 感谢亚当的想法!不知道为什么我在问之前没有想到这个!打算在这里做实验。
      猜你喜欢
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2010-12-17
      • 1970-01-01
      相关资源
      最近更新 更多