¿AFNetworking puede manejar una queue de requestes?

Mi ejemplo en iOS 6:

  • Las requestes de varias partes deben enviarse (en order) al server. (por lo que la request forma una queue)
  • Se debe mostrar el progreso.
  • si una request falla, todo lo siguiente debe fallar
  • una queue de request debe ser cancelable

¿Puede AFNetworking ayudarme con esto? ¿O debería intentar build algo con NSOperations y ejecutar los loops yo mismo?

Si necesito pasar datos de context entre estas requestes, por ejemplo, una ID de transacción producida por la primera request. ¿Hay alguna consideración sobre la visibilidad del hilo que necesito considerar?

AFNetworking puede hacer esto. Recomiendo que use AFHTTPRequestOperationManager (que a su vez usa NSOperation), en lugar de AFHTTPSessionManager. Hay maneras de hacerlo con AFHTTPSessionManager, pero ninguno tan elegante como con las operaciones.

Debajo del capó, esto es lo que haría sin el administrador:

Utilizará un serializador de request para hacer su NSMutableURLRequest (por ejemplo, [AFHTTPRequestSerializer -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:] ; también hay un serializador de requestes JSON similar).

Una vez que tenga una request de URL, realice la operación con [AFHTTPRequestOperation -initWithRequest:] . También debe establecer sus bloques de finalización.

Finalmente, agregue su operación a [AFHTTPRequestOperationManager manager].operationQueue e [AFHTTPRequestOperationManager manager].operationQueue .


Ahora que entiendes cómo esto básicamente está trabajando en set, aquí hay un enfoque más simple:

  • Subclass AFHTTPRequestOperationManager , configurando opcionalmente el requestSerializer si no le gusta el valor pnetworkingeterminado
  • Anular (o copyr con una nueva implementación) -POST:parameters:constructingBodyWithBlock:success:failure:] : lo que quiere hacer es NO start la operación de inmediato.
  • Establezca las cadenas de dependencia NSOperation
  • start el primero