gpt4 book ai didi

ios - 如何知道一个 URL 是否有效并快速检查它是否打开

转载 作者:行者123 更新时间:2023-11-28 13:27:53 25 4
gpt4 key购买 nike

在我的项目中,我需要保存用户给定的 url。所以我需要检查它是否是一个有效的 URL,最重要的是它是否会在 WKWebView 中打开。我的问题:我可以验证一个 url,但不能确定它是否打开?

这是我的代码:

 func canOpenURL(_ string: String?) -> Bool {
guard let urlStr = string,
let url = URL(string: urlStr)
else { return false }

if !UIApplication.shared.canOpenURL(url) { return false }
let regEx = "((https|http)://)((\\w|-)+)(([.]|[/])((\\w|-)+))+"
let predicate = NSPredicate(format:"SELF MATCHES %@", argumentArray:[regEx])
return predicate.evaluate(with: urlStr)
}

我用的是这样的:

 if canOpenURL(ckeckedURL) {
print("URL Can Open")
} else {
print("Url cant Open")
}

问题是:当我给 ckeckedURL = https://klsklaksalskalksalksalkslkas.com 时,它也显示我有效。我知道这是一个有效的 url,但它不会在 WKWebView 中打开。有什么方法可以检查吗?

最佳答案

如果我没理解错的话,你想知道用户是否输入了“响应”网站的 url..?如果是这种情况,您可以发出 URLRequest 并检查 statusCode 是否成功,如下所示:

guard let url = URL(string: "https://asdasdasd.com") else { fatalError() }

URLSession.shared.dataTask(with: url) { data, resp, err in

guard let resp = resp as? HTTPURLResponse else { print("not a HTTP URL"); return }

if (200..<300).contains(resp.statusCode){
print("valid")
}else{
print("invalid")
}

}.resume()

请记住,dataTask 完成将异步运行,因此您可能希望在检查 url 时有一个等待/加载系统...

关于ios - 如何知道一个 URL 是否有效并快速检查它是否打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58048820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com