通常都是使用Reachability来检查网络状态的,可以顺利获取到机子是wifi还是3G网络,此库区分网络连接的时候只是简单的查看有没有ip地址,这就造成了连上wifi,但是wifi上不了网的情况下,依然返回网络可连接的结果,这是很蛋疼的!
检测网络是否连接,可以使用NSURLRequest简单的判断下,以下是方法,基于Swift 2.0的(呵呵,不知道方法会不会变,因为我写这文章的时候变了)
/**
* 检测网络是否连接
*/
func requestUrl(urlString: String) -> Bool {
let url: NSURL = NSURL(string: urlString)!
let request: NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.timeoutInterval = 5
var response: NSURLResponse?
do {
try NSURLConnection.sendSynchronousRequest(request, returningResponse: &response)
if let httpResponse = response as? NSHTTPURLResponse {
if httpResponse.statusCode == 200 {
print("response:\(httpResponse.statusCode)")
return true
}
}
return false
}
catch (let error) {
print("error:\(error)")
return false
}
}
上面只是一个简单的网络请求方法而已,可以判断机子网络是否真的可以上网。例如以下调用:
print(requestUrl("https://www.baidu.com/"))
返回如下:
response:200
true
网友评论