我使用WKWebview
加載URL。如何檢查鏈接是否與WKWebview斷開?
let webView = WKWebview()
let request: NSMutableURLRequest = NSMutableURLRequest(URL: url!)
webView.loadRequest(request)
如何檢測webView應加載的鏈接是否被破壞?
我使用WKWebview
加載URL。如何檢查鏈接是否與WKWebview斷開?
let webView = WKWebview()
let request: NSMutableURLRequest = NSMutableURLRequest(URL: url!)
webView.loadRequest(request)
如何檢測webView應加載的鏈接是否被破壞?
您可以使用canOpenUrl
方法:
UIApplication.sharedApplication().canOpenURL(url)
它會做URL驗證,如果連接狀態是正常,則返回true。 打電話之前它主要使用:
UIApplication.sharedApplication().openURL(url)
,以確保這個環節可以在Safari中打開,但它應該幫助你在這裏太。
確保鏈接以http://或https://開頭。
編輯:
它只會檢查鏈接是否是正確的網址。
如果你想看到的頁面是離線的,授權問題等,可以實現WKNavigationDelegate
協議,並檢查了這種方法:
- webView:didFailNavigation:withError:
這應該給你更多的信息。
使用它總是個好主意:str.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
它確保您不會傳遞URL中不允許的字符。
編輯2: 要檢測的狀態代碼,你可以嘗試實施:
- webView:decidePolicyForNavigationResponse:decisionHandler:
導航響應是NSURLResponse
實例,但 每當你做一個HTTP請求,NSURLResponse
對象你回來居然是NSHTTPURLResponse
類的一個實例,因此您應該將其轉換爲NSHTTPURLResponse
。這應該會給你一個statusCode
。 在方法的最後一行中,您應該調用處理函數,例如decisionHandler(WKNavigationResponsePolicyAllow)
。
如果你想檢查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!
if let url = NSURL(string: yourUrlString) {
var canOpen = UIApplication.sharedApplication().canOpenURL(url)
}
沒有你嘗試加密的網址,然後再提出請求,以避免破碎的字符,如空格和「#」..等? –
@Manch如何做這個加密部分? – confile
對不起,我的意思是編碼的網址,所以看看這個threa d http://stackoverflow.com/a/24552028/4194908 –