¿Cuál sería la forma más elegante de recibir datos de una API JSON de transmisión mediante AFNetworking? AFNetworking proporciona una excelente compatibilidad para recibir datos que no provienen de las API de JSON, pero no pude encontrar ningún ejemplo de transmisión de JSON.Streaming JSON con AFNetworking en IOS
Respuesta
AFNetworking no tiene una operación integrada de estilo JSON de transmisión tipo SAX, pero debería ser sencillo crear la suya propia.
- crear una subclase de
AFJSONRequestOperation
- Utilice la propiedad
outputStream
de la operación durante la inicialización para conectarlo a un analizador JSON que apoya el análisis de estilo SAX (como Yajl). El analizador leerá los datos y construir el objeto JSON ya que viene en - Conexión por la propiedad
responseJSON
para leer el objeto en caché desde el analizador - ... o dependiendo de cómo lo está haciendo streaming, es posible que necesite para agregar una nueva propiedad que define un bloque para ejecutar cuando vuelven nuevos objetos JSON (por ejemplo,
setReceivedJSONBlock:((^)(void (id JSON))block
). Este bloque probablemente se desencadenará mediante métodos delegados enviados desde el analizador (por ejemplo,<YAJLParserDelegate> -parserDidEndDictionary:
).
Si puede hacer que esto funcione, le animo a que publique y comparta esto con otros. Creo que esto podría ser útil para muchas personas.
¡Gracias por la respuesta, probaré el enfoque sugerido! – akisaarinen
Esto no va a funcionar tan fácilmente con AFNetworking. Primero, el método de AFURLConnectionOperation -connection: didReceiveData: no está implementado correctamente. Solo funciona para transmisiones que siempre consumen TODOS los bytes proporcionados por la conexión. Esto incluye secuencias de archivos y secuencias de memoria. Sin embargo, para "conectar" la API de transmisión de un analizador con NSURLConnectionDelegate es necesario un enfoque más elaborado que implique algún tipo de "cola síncrona" como medio para transportar los datos y una secuencia emparejada que tenga un búfer de tamaño fijo. – CouchDeveloper
¿Puedes explicar un poco más sobre esto? ¿Cómo conectar outputStream al analizador JSON? –
- 1. Obtener JSON con Autenticación HTTP con AFNetworking
- 2. AFNetworking dejó de funcionar bajo iOS 6
- 3. Problema con la recuperación de JSON con AFNetworking
- 4. ¿Descargue un archivo/imagen con AFNetworking en iOS?
- 5. Implementación de HTTP Live Streaming en iOS
- 6. Solicitud de publicación de AFNetworking con comentarios de json
- 7. Solicitud múltiple con AFNetworking
- 8. Compatibilidad nativa con JSON en iOS?
- 9. AFNetworking devuelve un objeto _NSCFData en lugar de JSON
- 10. afnetworking - exc_bad_access en startMonitoringNetworkReachability
- 11. POST Carga jpeg con AFNetworking
- 12. AFNetworking y POST Request
- 13. Streaming con un AVAudioplayer
- 14. AFNetworking + cancelAllRequests
- 15. AFNetworking - ¿Cómo hacer solicitud POST
- 16. iOS JSON NSString Parse
- 17. AFNetworking (AFJSONRequestOperation) convertir a AFHTTPClient
- 18. error de selector no reconocido con NSJSONSerialization + AFNetworking
- 19. AFNetworking: enqueueBatchOfHTTPRequestOperations problema con el bloque de terminación
- 20. Streaming con Android MediaPlayer en SDK 8
- 21. Streaming con intermediario en Windows 8
- 22. Parse json con NSJSONSerialización clase utilizando objectForKey en iOS
- 23. solicitud POST y PUT AFNetworking
- 24. ¿Cómo se cargan varios archivos con AFNetworking?
- 25. Cómo cancelar solicitud de red con afnetworking
- 26. WCF streaming en asmx?
- 27. cambio AFNetworking baseURL
- 28. Datos JSON de iOS en PHP-script
- 29. marco JSON no funciona en iOS 4
- 30. AFNetworking and Cookies
¿Alguna vez ha funcionado algo así? –
Por lo que recuerdo, logré implementar un ejemplo de transmisión JSON muy simple, pero muy pronto mi interés en el proyecto IOS lo necesité (por ejemplo, un cliente CampFire). Desafortunadamente, nada salió de esto. :) – akisaarinen
Bastante justo. ¡Gracias por la actualización! –