nsurlconnection - NSMutableURLRequest no obedeciendo mi timeoutInterval
nsurlrequest (3)
Como François mencionó anteriormente, los 240 segundos parecían estar funcionando como lo describió hasta iOS 6 (incluido en 5.1). Ahora, este tiempo de espera parece tomar el valor predeterminado de 60 segundos como se esperaba (si no lo configuró usted mismo de manera explícita), por lo que si tiene una solicitud POST que podría haber confiado en el tiempo más largo sin darse cuenta, es posible que deba cambiar el timeoutInterval manualmente para usar un valor más alto. He podido establecer el tiempo de espera por debajo y por encima de 60 segundos para una POST, por lo que no parece que la marca de 60 segundos represente una restricción mínima para el tiempo de espera para este tipo de solicitud.
Estoy publicando una imagen pequeña, por lo que me gustaría que el intervalo de tiempo de espera fuera corto. Si la imagen no se envía en unos segundos, es probable que nunca se envíe. Por alguna razón desconocida, mi NSURLConnection
nunca falla, no importa lo breve que establezca el timeoutInterval
.
// Create the URL request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]
initWithURL:[NSURL URLWithString:@"http://www.tumblr.com/api/write"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:0.00000001];
/* Populate the request, this part works fine */
[NSURLConnection connectionWithRequest:request delegate:self];
Tengo un punto de interrupción establecido en - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
pero nunca se está activando. Mis imágenes continúan timeoutInterval
bien, aparecen en Tumblr a pesar del pequeño timeoutInterval
.
Este problema se solucionó en iOS5, por lo que no enfrentarás este problema ahora. Y tu código funcionará perfectamente
Hay un hilo en los foros de desarrollo de Apple que tratan este tema . Al parecer, en el sistema operativo del iPhone, el instalador exige un intervalo de tiempo de espera mínimo de 240 segundos (4 minutos). Esto solo ocurre cuando el PostBody no está vacío (normalmente cuando se utiliza una solicitud POST). Esto parece una locura, pero al parecer está ahí para asegurarse de que las solicitudes abandonen el sistema, aunque la interfaz WWAN (3G) tarde muchos segundos en activarse. 240 segundos parece bastante pronunciado, por lo que sugieren configurar un temporizador y cancelar la conexión asincrónica cuando se dispara el temporizador. Sé que esto parece estúpido, pero esa es la única que logré obtener un tiempo de espera para las solicitudes POST ... :-(