【问题标题】:Swift, Check if particular website reachableSwift,检查特定网站是否可访问
【发布时间】:2017-05-31 05:28:55
【问题描述】:

如何检查特定网站的可达性?

我已连接到 wifi 网络以访问 Internet,该网络已阻止某些站点。如何检查我是否可以访问这些网站?

我已经检查了可达性类,但我无法检查特定网站。

目前我正在使用Reachability.swift

【问题讨论】:

  • 你对“可达”的定义是什么?即使是被阻止的网站也倾向于返回某种页面,告诉您该页面已被阻止。因此,任何基本检查都会使页面看起来像是“可访问的”。
  • @rmaddy : 显示超时。
  • 您的问题不清楚(网站无法访问的标准是什么?)但我想您可以发出 HEAD 请求(如果可以访问,则避免下载整个页面)并检查服务器回复:stackoverflow.com/a/37134377/2227743

标签: ios swift reachability


【解决方案1】:

我不知道最佳做法是什么,但我使用 HTTP request 这样做。

func checkWebsite(completion: @escaping (Bool) -> Void ) {
    guard let url = URL(string: "yourURL.com") else { return }

    var request = URLRequest(url: url)
    request.timeoutInterval = 1.0 

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        if let error = error {
            print("\(error.localizedDescription)")
            completion(false)
        }
        if let httpResponse = response as? HTTPURLResponse {
            print("statusCode: \(httpResponse.statusCode)")
            // do your logic here
            // if statusCode == 200 ...
            completion(true)

        }
    }
    task.resume()
}

【讨论】:

  • 这会下载整个页面,而不仅仅是检查可用性。
  • 如何检查页面是否被阻止?如果页面碰巧下载超过一秒或用户访问速度有点慢,则 1 秒超时将使大多数页面看起来无法访问。
【解决方案2】:

您要使用的初始化程序列在该页面上。

您将主机名作为参数传递:

init?(hostname: String)
// example
Reachability(hostname: "www.mydomain.com")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    相关资源
    最近更新 更多