我有一个用Swift编写的iPad应用程序,该应用程序通过REST API与我们的HTTP服务器通信,我需要将侦听器添加到两种类型的事件中:HTTP服务器应用程序关闭(502,503,504)和HTTP服务器应用程序再次打开(2xx,3xx,4xx) 。

现在,我正在使用Alamofire的NetworkReachabilityManager,通过它可以将侦听器设置为诸如网络不可达和网络再次可达等事件。我什至可以通过构造函数调用NetworkReachabilityManager(host: "www.ourserver.com")在我们的服务器上放置一个主机,但是它并不能真正实现我想要的功能。它仅查找主机路由到的IP地址是否可访问(ping)。

class NetworkReachabilitySubject {

    private let manager = NetworkReachabilityManager(host: "www.ourserver.com")
    private var observers : [NetworkReachabilityObserver] : []

    // MARK: - Methods

    func startListening() {
        manager?.listener = { status in
            for observer in self.observers {
                observer.networkStatusChanged(currentStatus: status)
            }
        }
        manager?.startListening()
    }

}



我需要更进一步地管理服务器应用程序何时关闭/打开,不仅要在其主机关闭/打开时进行管理。为此,我创建了一个特殊的HTTP端点http://www.ourserver.com/isalive,可用于解析服务器应用程序是否关闭。 Alamofire或其他库中有什么方法可以解决此问题?理想情况下,类似于HttpServerAppReachabilityManager(endpoint: "http://www.ourserver.com/isalive")的事物与Alamofire的NetworkReachabilityManager具有相同的功能,但是它还可以管理该URL端点的可达性?

最佳答案

通过这个小片段,您可以检查HTTP状态代码:

let defaultSession = URLSession(configuration: .default)
var dataTask: URLSessionDataTask?

 dataTask =
    defaultSession.dataTask(with: url) { [weak self] data, response, error in
    defer {
      self?.dataTask = nil
    }
    let httpResponsStatusCode = (response as? HTTPURLResponse)?.statusCode
    // Now check the status code
  }
  dataTask?.resume()

关于ios - 我可以使用Alamofire检查HTTP服务器URL端点的可达性吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58611377/

10-11 22:14
查看更多