webkitview tutorial objective-c swift http uiwebview

objective-c - tutorial - wkwebview swift 3



Obtenga el encabezado HTTP Response en UIWebView (2)

Rápido

Swift es más estricto; desea protegerse contra punteros nil y optionals :

  • comprobar que la webView realidad tiene una request
  • compruebe que la request realidad tiene una NSCachedURLResponse
  • compruebe la respuesta de tipo contra NSHTTPURLResponse

func webViewDidFinishLoad(webView: UIWebView) { if let request = webView.request { if let resp = NSURLCache.sharedURLCache().cachedResponseForRequest(request) { if let response = resp.response as? NSHTTPURLResponse { print(response.allHeaderFields) } } } }

¿Cómo puedo obtener la respuesta de los encabezados HTTP desde WebView? He encontrado semi-soluciones en Stackoverflow , pero está escrito en Objective-C y no puedo convertirlo a Swift (lo he intentado con mi pobre conocimiento de Obj-C).

Código Objective-C:

- (void)webViewDidFinishLoad:(UIWebView *)webView { NSCachedURLResponse *resp = [[NSURLCache sharedURLCache] cachedResponseForRequest:webView.request]; NSLog(@"%@",[(NSHTTPURLResponse*)resp.response allHeaderFields]); }

  1. ¿Cómo se verá ese código en Swift?
  2. Tal vez ahora tenemos mejores formas de hacerlo? El almacenamiento en caché no siempre está habilitado.

Solo usando esto en SWIFT 3.1 :

if let request = webView.request { if let resp = URLCache.shared.cachedResponse(for: request) { if let response = resp.response as? HTTPURLResponse { print(response.allHeaderFields) } } }