Estoy usando iOS sdk5.0. Estoy golpeando un enlace usando NSURLConnection y creando una solicitud. Pero mi control no va al método didReceiveAuthenticationChallenge. ¿No se llama a didReceiveAuthenticationChallenge en iOS5.0?didReceiveAuthenticationChallenge no se llama
Respuesta
Según Docs de NSURLConnectionDelegate
connection:canAuthenticateAgainstProtectionSpace:
connection:didReciveAuthenticationChallenge:
connection:didCancelAuthenticationChallenge:
están obsoletas y el nuevo código debe adoptar
connection:willSendRequestForAuthenticationChallenge
Los delegados de más edad todavía serán llamados para la compatibilidad, pero incurrir más latencia para hacer frente a la demanda de autenticación .
Estaba teniendo el mismo problema (ver mi comentario anterior). En mis búsquedas, me encontré con esta esencia: https://gist.github.com/1675763. Probé el código en la ruta AUTH_NEW. El delegado aún no estaba siendo llamado. Entonces noté el comentario en la línea 40: "Quizás iOS 5 no puede soportar el algoritmo de firma DSA".
Hice algunas búsquedas, y no encontré nada que indicara que esto era una limitación, era un problema. Finalmente, en desesperación, cambié esto. Estaba usando keytool de java (la versión reinventada de openssl + de Java) para generar mi certificado autofirmado. Utiliza DSA por defecto. Fuera de la desesperación, usé una bandera para obligarlo a usar RSA. Luego se llamó al delegado y funcionó el código en la esencia anterior.
Todavía tengo que ver la documentación que dice que no puede usar DSA. openssl parece usar RSA por defecto, por lo que las personas que lo usan probablemente nunca se topen con esto.
Relato breve: verifique su certificado y asegúrese de que esté firmado con RSA y no con DSA.
Me gustaría enfatizar el punto que Chris Westin hace. Y más allá de eso, en realidad creé una clave RSA, pero copié accidentalmente el DSA al servidor. Por lo tanto, cuando tenga dudas, debe usar el comando -v (verboso) para asegurarse de que tiene el certificado correcto en su lugar. Ejemplo:
keytool -list -v -keystore <name of keystore here>
- 1. onPostExecute no se llama
- 2. onPageScrolled() no se llama
- 3. textFieldShouldReturn no se llama
- 4. fbDidLogin no se llama
- 5. WebMethod no se llama
- 6. didReceiveRemoteNotification no se llama
- 7. mouseMoved no se llama
- 8. View.onMeasure() no se llama
- 9. onServiceConnected() no se llama
- 10. forwardInvocation no se llama?
- 11. accesorioButtonTappedForRowWithIndexPath: no se llama.
- 12. ViewForAnnotation no se llama
- 13. UITableView cellforrowatindexpath no se llama
- 14. MKAnnotationView drawRect: no se llama
- 15. MPMoviePlayerPlaybackDidFinishNotification se llama cuando no
- 16. onDraw personalizada() no se llama
- 17. EKEventViewDelegate didCompleteWithAction no se llama
- 18. NuGet - install.ps1 no se llama
- 19. Android onConfigurationChanged no se llama
- 20. Reductor Hadoop no se llama
- 21. Tomcat ServletContextListener.contextDestroyed no se llama
- 22. dylib destructor no se llama
- 23. Intento implícito no se llama
- 24. UIViewController -viewDidLoad no se llama
- 25. Ruta troncal no se llama
- 26. localStorage eventListener no se llama
- 27. La función no se llama
- 28. initwithstyle: reuseIdentifier: no se llama
- 29. Drupal hook_views_post_execute no se llama
- 30. java keylistener no se llama
gracias himanshu. Entonces, en lugar de este método, si NSURLConnectionDelegate, debería usar connection: willSendRequestForAuthenticationChallenge (en iOS 5). Pero cuando ejecute este código en una versión que no sea 5.0, generará un error. ¿¿Derecha?? – anshul
nuevamente según [Docs] (http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSURLConnectionDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/NSURLConnectionDelegate) 'Si la conexión : willSendRequestForAuthenticationChallenge: no está implementado, la conexión anterior, métodos en desuso: canAuthenticateAgainstProtectionSpace :, connection: didReceiveAuthenticationChallenge :, y conexión: didCancelAuthenticationChallenge: se llaman en su lugar. –
Tengo una implementación de la nueva, willSendRequestForAuthenticationChallenge que configuré como el delegado, y no se llama. Intento moverme usando un certificado autofirmado para probar y obtengo una solicitud API que falló con el error: Dominio de error = NSURLErrorDomain Code = -1200 "Se ha producido un error de SSL y no se puede establecer una conexión segura con el servidor. ", etc. Las búsquedas indican que este método delegado debería permitirme hacer esto, pero ni siquiera se está llamando al delegado. –