Pregunta

Estoy desarrollando una aplicación multiplataforma usando Kivy Framework. Mi aplicación está escrita completamente en Python. Kivy hace toda la resolución de dependencia para mi aplicación para ejecutarse en iOS o Android.

Ahora, mi requisito es descargar un archivo usando NSURLCONNEPTECTORE. Si no necesito descargar un archivo usando NSurlConnection, estoy usando el módulo URLLIB2 de Python para descargar el archivo. Pero para descargarlo usando NSurlConnection, tengo que escribir un código C Nativo C.

Mi aplicación puede hacer varias descargas. Logre un archivo de un enlace que tiene todos los enlaces de descarga. Lee cada enlace para descargar y engendra un hilo. Entonces ese hilo se encarga de la descarga.

Para descargar un archivo usando NSURLCONNEPTECTORIO, necesito escribir un código C Nativo del Objetivo C que se puede llamar desde Python. Y para llamar a un método de una Clase del Objetivo C Tengo un Módulo de Python Handy llamado PyoBJUS .

He escrito una clase de OBJETIVO C que puede descargar un archivo. Pero estoy entrando en un tema interesante.

Cuando estoy llamando al método objetivo C al presionar un botón de mi aplicación, descarga y todos los delegados se llaman.

Pero cuando estoy tratando de descargar la misma cosa al encender un hilo de Python y llamar al método C de ese hilo, la descarga no funciona.

Aquí está la pieza del código que llama un método OBJETIVO C para descargar -

from pyobjus.dylib_manager import load_dylib, make_dylib
from pyobjus import autoclass

urllib2Wrapper = autoclass('urllib2Wrapper')
ulib2 = urllib2Wrapper.alloc().init()

NSString = autoclass('NSString')

# shortcut to mimic the @"hello" in objective C
ns = lambda x: NSString.alloc().initWithUTF8String_(x)

ulib2.openWithUrl_withMethod_withFile_(ns(self.params["--url"]), ns("GET"), ns(""))

ulib2.download()

Soy un principiante en el objetivo C. ¿Alguien tiene alguna idea de por qué está sucediendo esto?

gracias

¿Fue útil?

Solución 2

He resuelto el problema.La razón por la que estaba fallando porque NSurlConnection requiere un poco de trabajo extra si se llama desde hilos de fondo.

Por favor, siga este enlace - >>http://www.russellj.co.uk/Blog/2011/07/09/NSURLCONNEY-In-a-Background-Thread/

Entonces, he modificado mi código de MI OBJETIVO C para resolver el problema.

Otros consejos

¿Ha intentado usar el Kivy UrlRequest?

http:// kivy.org / docs / api-kivy.network.urlrequest.html? resaltar= urlrequest # kivy.network.urlrequest

¡Esto le permite descargar algo asíncrono y todo en Python?-))

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top