我有一个用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/