使用AFNetworking处理单个请求的多个JSON响应

时间:2013-05-15 18:19:28

标签: ios json afnetworking

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

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

我一直在使用AFNetworking,并希望继续使用它。最后,如果需要添加,我想将此组件返回给社区。

任何人都有任何想法来处理这样的事情?现在我有一个服务,每隔几秒就推送一次JSON来测试。

3 个答案:

答案 0 :(得分:3)

有几点想法:

  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. 第三种方法是使用拉机制,但如果您正在寻找一种以非串行方式使用多个Feed的方法,那就是创建多个AFURLConnectionOperation(或者适当的子类)操作,并同时提交它们(您可能希望将队列上的maxConcurrentOperations约束为4或5,因为iOS只能有这么多并发网络操作)。通过同时发布这些,可以缓解网络延迟导致的许多延迟。如果你采用这种方法,可能需要注意线程的安全性,但它可能比上述两种技术更容易。

答案 1 :(得分:1)

这听起来像是套接字(或网络套接字的作业,无论更简单)。

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

或许更好的方法是通过分页式技术处理适当的重新请求。您可以请求1 /页的配置文件的第1页,然后请求第2页等。然后您可以控制流,即如果您想要请求所有的并且请求一个,然后请求下一个顺序。这样做的工作量就会减少,而且(在我看来)会更清洁,更容易维护。

答案 2 :(得分:0)

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

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

相关问题