2015-10-26 2 views
-1

Я использую WKWebview для загрузки URL-адреса.Как проверить связь с WKWebview?

let webView = WKWebview() 
let request: NSMutableURLRequest = NSMutableURLRequest(URL: url!) 
webView.loadRequest(request) 

Как я могу обнаружить, если звено WebView необходимо загрузить сломана?

+0

сделал вас попробуйте зашифровать URL-адрес, прежде чем вы сделаете запрос, чтобы избежать сломанных символов, таких как пробелы и «#» .. и т. д. –

+0

@Manch. Как мне сделать эту часть шифрования? – confile

+0

Извините, я имею в виду кодирование URL-адреса, поэтому взгляните на это threa d http://stackoverflow.com/a/24552028/4194908 –

ответ

1

Вы можете использовать canOpenUrl метод:

UIApplication.sharedApplication().canOpenURL(url) 

Это будет делать проверку URL-адрес, и если ссылка нормально оно возвращает истину. Это в основном использовать перед вызовом:

UIApplication.sharedApplication().openURL(url) 

, чтобы убедиться, что эта связь может быть открыт в сафари, но это должно помочь вам здесь.

Убедитесь, что ссылка начинается с http: // или https: //.

Отредактировано:

Это будет просто проверить ссылка является правильным URL.

Если вы хотите увидеть, что страница форума, вопросы авторизации и т.д. Вы можете реализовать WKNavigationDelegate протокол и проверить этот метод:

- webView:didFailNavigation:withError: 

это должно дать вам больше информации.

Это всегда хорошая идея: str.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAl‌​lowedCharacterSet())! он не пропускает символ, который не разрешен в URL-адресе.

Edited 2: Чтобы определить код состояния можно попробовать реализовать:

- webView:decidePolicyForNavigationResponse:decisionHandler: 

ответ навигации является NSURLResponse экземпляр, но всякий раз, когда вы делаете запрос HTTP, то NSURLResponse объект вы получите обратно на самом деле экземпляр класса NSHTTPURLResponse, поэтому вы должны указать его на NSHTTPURLResponse. Это должно дать вам statusCode. В последней строке метода вы должны вызвать обработчик, например decisionHandler(WKNavigationResponsePolicyAllow).

+0

Предположим, ссылка - правильный URL. Целевая страница может быть отключена. Как я могу это проверить? – confile

+0

@confile, пожалуйста, см. Отредактированный ответ. – Greg

+0

Вы бы предложили кодировать каждый URL-адрес перед вызовом, как это предлагается здесь: http://stackoverflow.com/questions/24551816/swift-encode-url/24552028#24552028 – confile

0

Если вы хотите проверить, если URL строка является правильным и действительным - просто создать NSURL объект, если путь содержит ошибку, он обрушит на nil:

let string = "http://google.com" 
let url = NSURL(string: string) 

let brokenString = "http:\\brokenurl.12" 
let brokenUrl = NSURL(string: brokenString) // nil - it's not valid! 
Смежные вопросы