NSMutableURLRequest no obedeciendo mi timeoutInterval

Estoy POSTANDO una imagen pequeña, por lo que me gustaría que el intervalo de tiempo de espera sea corto. Si la imagen no se envía en unos segundos, probablemente nunca se envíe. Por alguna razón desconocida, mi NSURLConnection nunca falla, no importa cuán corto sea 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 configurado en - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error pero nunca se está disparando. Mis imágenes continúan siendo publicadas, están apareciendo en Tumblr a pesar del pequeño timeoutInterval .

Hay un hilo en los foros de desarrollo de Apple discutiendo este tema . Aparentemente en iPhone OS, el setter exige timeoutInterval un mínimo de 240 segundos (4 minutos). Esto solo ocurre cuando el cuerpo postal no está vacío (generalmente cuando se usa una solicitud POST). Esto parece una locura, pero aparentemente está ahí para asegurarse de que las solicitudes salgan del sistema, aunque la interfaz WWAN (3G) podría tardar varios 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 ese es el único que pude obtener el tiempo de espera para solicitudes POST … 🙁

Como dijo François anteriormente, los 240 segundos parecían funcionar 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ó explícitamente), por lo que si tiene una solicitud POST que podría haber dependido involuntariamente del tiempo prolongado, es posible que tenga que cambiar el timeoutInterval manualmente para usar un valor más alto. Pude configurar el tiempo de espera tanto inferior como superior a 60 segundos para un 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.

Este problema está solucionado en iOS5, por lo que no enfrentarás este problema ahora. Y tu código funcionará perfectamente

    Intereting Posts