我正在开发一个应用程序,我想从我的服务器动态下载内容(JSON)。在下载开始之前,我想检查设备是否在线并且我的服务器是否可以访问。
使用Cordova,您可以轻松获取网络信息(WiFi
,Cellular
,None
,...)。但我发现需要VPN连接的WiFi网络存在问题。没有VPN Cordova返回WiFi
但应用程序无法连接到服务器。如何检查服务器是否可以访问?
我使用Cordova和Ionic Framework(使用AngularJS)和AngularJS的$http
功能来下载我的数据。
以下是我当前的isOnline()
服务:
function() {
var is_online;
var network_state = navigator.connection.type;
return ((network_state == 'unknown') || (network_state == 'none')) ? false : true;
}
这是我下载数据的方式:
if(isOnline()) {
var url = 'http://domain.com/file.json';
$http({
method: 'GET',
url: url
})
.success(function(data, status, headers, config) {
// save data
})
.error(function(data, status, headers, config) {
// error
});
}
不幸的是,如果无法访问服务器,则下载功能不会转到错误功能。
非常感谢你的帮助!
答案 0 :(得分:0)
在您的WiFi / VPN情况下,我会说错误功能没有被点击,因为您的$ http仍在尝试检索数据,并且不知道VPN正在阻止它。
你有没有等待一段时间才能超时?尝试为调试目的指定一个低超时值,并检查是否随后调用错误函数。