gpt4 book ai didi

ios - 我可以使用 Alamofire 检查 HTTP 服务器 URL 端点的可达性吗?

转载 作者:行者123 更新时间:2023-11-29 05:21:48 25 4
gpt4 key购买 nike

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

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