2009-09-15 33 views
62

Estoy usando este NSURLConnection con delegados.NSURLConnection tiempo de espera?

nsconnection = [[NSURLConnection alloc] initWithRequest:request 
    delegate:self startImmediately:YES]; 

El problema es que el sitio web no responde en absoluto. Nada, solo gira en el navegador con la página en blanco, sin fallas. En mis delegados, me encargo de la falla, pero cuando el sitio no responde, los delegados no reciben una llamada. ¿Alguna idea sobre cómo agotar el tiempo de conexión?

Respuesta

127

Puede especificar un tiempo de espera en su objeto NSURLRequest. Una forma de hacerlo es construirlo a través del método requestWithURL:cachePolicy:timeoutInterval:. (Puede pasar el parámetro predeterminado NSURLRequestUseProtocolCachePolicy cachePolicy si no desea preocuparse por esa parte). El tiempo de espera es un valor flotante en segundos, ya que básicamente son todos los intervalos de tiempo en el SDK de iPhone.

También asegúrese de que el delegado NSURLConnection esté configurado y responda al método connection:didFailWithError:. Una conexión siempre llama a este método o al connectionDidFinishLoading: al finalizar la conexión.

+0

El delegado funciona y responde cuando un error es enviado por el servidor web. En este caso, el servidor web no envía nada. Solo gira. Configuro el método de solicitud para agregar el tiempo de espera. Gracias – Jordan

+0

Acabo de marcar. Ya está configurado para el tiempo de espera. – Jordan

+0

Si desea probar una alternativa a NSURLStuff, un amigo mío recomendó ASIHTTPRequest (google it), que es de uso gratuito, y se ve muy amigable, incluida la funcionalidad de tiempo de espera. – Tyler

24

Editar: Esta respuesta ahora es obsoleta, pero a la fecha de la respuesta fue precisa.

Sé que este hilo es viejo, pero me encontré con este problema también. Esto sucedió al probar la aplicación fuera de la red interna donde vivían los servicios. El servicio finalmente expirará, pero Apple exige un período de 240 segundos (4 minutos) antes de que se agote el tiempo de espera. Mira este hilo para obtener más información sobre el asunto.

NSMutableURLRequest not obeying my timeoutInterval

+0

Creo que lo solucioné agregando NSCredentials a mi aplicación. La falta de capacidad de respuesta se debió al servidor que solicitaba la autenticación, que no estaba proporcionando. – Jordan

+3

¡Esa es información incorrecta! De acuerdo con http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html%23//apple_ref/occ/cl/NSURLRequest, el intervalo de tiempo de espera predeterminado es 60 segundos. – stigi

+4

@stigi parece que está haciendo referencia al material para Mac OS, mientras que ezekielDFM está hablando de iOS. – leukosaima

Cuestiones relacionadas