我是新手,似乎无法弄清楚如何使用NSURLSession dataTaskWithResult:completion handler
替换NSURLConnection.sendSynchronusRequest(request as URLRequest, returning: &response
在以下代码中。后者已被折旧。
public class Reachability {
class func isConnectedToNetwork() -> Bool {
var status:Bool = false
let url = NSURL(string: "https://google.com")
let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "HEAD"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData
request.timeoutInterval = 10.0
var response:URLResponse?
do {
let _ = try NSURLConnection.sendSynchronousRequest(request as URLRequest, returning: &response) as NSData?
}
catch let error as NSError {
print(error.localizedDescription)
}
if let httpResponse = response as? HTTPURLResponse {
if httpResponse.statusCode == 200 {
status = true
}
}
return status
}
}
答案 0 :(得分:2)
带有完成处理程序的简单解决方案
class func isConnectedToNetwork(completion: @escaping (Bool) -> ()) {
let url = URL(string: "https://google.com")!
var request = URLRequest(url: url)
request.httpMethod = "HEAD"
request.cachePolicy = .reloadIgnoringLocalAndRemoteCacheData
request.timeoutInterval = 10.0
URLSession.shared.dataTask(with:request) { (data, response, error) in
if let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 {
completion(true)
} else {
completion(false)
}
}.resume()
}
致电
Reachability.isConnectedToNetwork { success in
if success {
// google is up
} else {
// google is down.
}
}