Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiple request with AFNetworking

I'm trying to do multiple request in background to download many jsons and check data from them but I don't know how to use AFNetworking in that case.

I tried to do like Wiki explaings but when it's going to download the second file then the app breaks. I want to do all the process in background.

Thanks

like image 802
Pedro Piñera Buendia Avatar asked Oct 11 '12 00:10

Pedro Piñera Buendia


2 Answers

AFNetworking will definitely handle this. We use it for exchanging data with a RESTful set of services. The things to keep in mind:

  • An operation (eg. AFHTTPRequestOperation) can only be used once.
  • An operation is asynchronous.
  • Put your operations in an NSOperationQueue, or use AFHTTPClient (suggested) to manage the operations for you.
  • When sending multiple requests, always assume that the responses will come back in a random sequence. There is no guarantee that you will get the responses in the same sequence as the requests.

Hope this helps to point you towards a solution to your problem. Without more detail in your question, it's difficult to give you a specific answer.

like image 160
glenn Avatar answered Oct 12 '22 08:10

glenn


Check out AFHTTPClient's enqueueBatchOfHTTPRequestOperations:progressBlock:completionBlock:, which lets you enqueue multiple requests operations at once with the added bonus of having a completion handler that is called when all of those requests have finished, as well as a block for tracking the progress. Also note, that every single operation can still have its own completion handler (useful if you have to process the results of a request, for example).

If you don't need to customize the request operation (and don't need individual completion blocks), you can also use enqueueBatchOfHTTPRequestOperationsWithRequests:progressBlock:completionBlock:, which allows you to pass an array of NSURLRequest directly without having to build the operations yourself.

like image 29
Daniel Rinser Avatar answered Oct 12 '22 06:10

Daniel Rinser