UIWebview.loadURL () pero la URL es un certificate autofirmado. Swift iOS

Tengo una URL https://203.xxx.xxx.xxx . Esta URL se usa solo para nuestros propósitos de testing .

Quiero cargar esta URL en UIWebview en Swift2.0. Pero Ay ! el certificate ha caducado

Hice lo mismo con éxito en Android, pero tuve problemas en Swift.

Por favor guía …..


¡Qué hice hasta ahora!


01. Defined AppTransportSecurity in info.plist <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 
  1. Intentó usar la connection (canAuthenticateAgainstProtectionSpace) y la connection (willSendRequestForAuthenticationChallenge)

Pero no tuvo éxito.


¿Qué sucede cuando carga la misma URL en Safari?


Error dice: Safari no puede verificar la IDENTIDAD

Necesita ayuda para evitar esto.


También probé algunos enlaces : (Esta podría ser la solución)

 @implementation NSURLRequest (NSURLRequestWithIgnoreSSL) + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host { return YES; } @end 

¿Pero cómo implementar esto en Swift 2.0? Si estoy equivocado, guía bien en Swift.

Finalmente obtuve la respuesta como:

Paso 1 >> import SafariServices

Paso 2 >> Use NSURLConnectionDelegate con su ViewController es decir

class ViewController:UIViewController, NSURLConnectionDelegate

Paso 3 >> Modos de anulación:

 func connection(connection: NSURLConnection, canAuthenticateAgainstProtectionSpace protectionSpace: NSURLProtectionSpace?) -> Bool func connection(connection: NSURLConnection, willSendRequestForAuthenticationChallenge challenge: NSURLAuthenticationChallenge) 

Paso 4 >> GOTO viewDidLoad dónde cargar su URL en la Vista Web, y realice los cambios como:

 let url = NSURL (string: URL)//where URL = https://203.xxx.xxx.xxx let requestObj = NSURLRequest(URL: url!) var request: NSURLRequest = NSURLRequest(URL: url!) var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)! connection.start() YOUR_WEBVIEW.loadRequest(requestObj); 

Paso 5 >> GOTO webView con shouldStartLoadWithRequest & return true. Si devuelve falso, nunca obtendrá los resultados.

 func webView(IciciWebView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool { //Do whatever you want to do. return true } 

Paso 6 >> Actualice la function:

 func connection(connection: NSURLConnection, canAuthenticateAgainstProtectionSpace protectionSpace: NSURLProtectionSpace?) -> Bool { print("In canAuthenticateAgainstProtectionSpace"); return true; } 

Paso 7 >> Actualice la function:

 func connection(connection: NSURLConnection, willSendRequestForAuthenticationChallenge challenge: NSURLAuthenticationChallenge) { print("In willSendRequestForAuthenticationChallenge.."); challenge.sender!.useCnetworkingential(NSURLCnetworkingential(forTrust: challenge.protectionSpace.serverTrust!), forAuthenticationChallenge: challenge) challenge.sender!.continueWithoutCnetworkingentialForAuthenticationChallenge(challenge) } 

Referencias: references de desarrolladores de Swift, muchas páginas de Stackoverflow y algunos foros de Google.

Estos pasos arreglaron mis problemas y ahora puedo cargar la URL autofirmada en una vista web.