Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swift中检查url是否有效?_Swift_Url - Fatal编程技术网

如何在Swift中检查url是否有效?

如何在Swift中检查url是否有效?,swift,url,Swift,Url,我想知道应该使用什么代码来检查url是否有效。我的意思不是检查诸如“https//”或“.com”之类的关键词,我的意思是检查url是否可以打开(也就是说,它是有效的url)。老实说,我在任何地方都找不到这个问题的答案,所以任何事情都是朝着正确的方向迈出的一步。您可以创建一个URLRequest,将其httpMethod设置为“HEAD”,发送一个异步请求,并检查httpurresponse状态码是否等于200: extension URL { func isReachable(comp

我想知道应该使用什么代码来检查url是否有效。我的意思不是检查诸如“https//”或“.com”之类的关键词,我的意思是检查url是否可以打开(也就是说,它是有效的url)。老实说,我在任何地方都找不到这个问题的答案,所以任何事情都是朝着正确的方向迈出的一步。

您可以创建一个
URLRequest
,将其
httpMethod
设置为
“HEAD”
,发送一个异步请求,并检查
httpurresponse
状态码
是否等于
200

extension URL {
    func isReachable(completion: @escaping (Bool) -> ()) {
        var request = URLRequest(url: self)
        request.httpMethod = "HEAD"
        URLSession.shared.dataTask(with: request) { _, response, _ in
            completion((response as? HTTPURLResponse)?.statusCode == 200)
        }.resume()
    }
}



当人们不读我的问题时,我很沮丧,即使我在所有的大写字母中都加了一些东西。让我再说一遍,我知道如何检查url是否包含某些关键字,但在堆栈溢出帖子中,它只说明了如何执行该操作。如果您用该代码输入google.c,它将被视为有效的url。然而,如果你打开那个链接,它会把你带到一个无效的url页面。不要推回,试着学习。如果URL作为URL字符串有效,则它是有效的。如果你的意思是别的,不要叫它“有效”。当你试图通过网络到达那里时会发生什么是一个偶然的事实。URL可以是有效的而不可访问。可能无法访问,因为网络已关闭。或者它可能不存在,但是如果域存在,并且您得到了404,那么它是可访问的(这不是任何类型的错误)。您需要对您想知道的内容进行更多的思考。感谢您的见解,我会记住这一点。HTTP服务器是否有HEAD方法的默认实现?直到现在我才意识到它的存在,在我实现的少数服务器中,我没有提供HEAD实现。我打赌我不是一个人。这不起作用,尽管它需要https://才能成为有效的url。换句话说,google.com将是无效的,但是它将是有效的。@Duncac我只是试图避免下载URL内容。当然,您可以跳过头部部分。@coder12345它不需要
https
。这将取决于你的应用程序传输安全设置。顺便说一句,google.com即使它在Safari上运行,也是无效的。它没有URL方案。@LeoDabus很抱歉对此感到恼火,但什么是应用程序传输安全设置,我如何更改它以使google.com有效。
let url1 = URL(string: "https://stackoverflow.com/questions/65224939/how-to-check-if-a-url-is-valid-in-swift")!
url1.isReachable { success in
    if success {
        print("url1 is reachable")  // url1 is reachable
    } else {
        print("url1 is unreachable")
    }
}
let url2 = URL(string: "https://stackoverflow.com/question/index.html")!
url2.isReachable { success in
    if success {
        print("url2 is reachable")
    } else {
        print("url2 is unreachable")  // url2 is unreachable
    }
}