我使用$http.post
在我的应用程序中调用一个简单的身份验证API。
this.login = function(scope, credentials) {
var url = REST_API.DOMAIN + REST_API.LOGIN;
$http.post(url, $.param(credentials)/* convert from json to query string */, {
headers: {
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
}
})
.success (function(response){
$log.info(response);
})
.error(function(data, status, header, config){
$log.error(data);
});
}
当我使用以下命令在浏览器中测试时,我的代码可以无缝地工作:
离子服务
但是当我在手机中启动它时:
离子run -lc android
响应数据为空时立即调用错误回调函数:
这段代码曾用于工作但在某个时间点它已停止工作。我记得做的唯一可能影响这种行为的是安装较新版本的android:
cordova平台删除android
cordova平台添加android@5.1.1
我注意到的另一点:我正在将http请求发送到localhost上的Web服务。但是,如果我在远程服务器上托管Web服务代码,http请求将在我的手机上成功运行。
答案 0 :(得分:2)
当您将代码上传到手机时,localhost将成为您的手机,而不是您的计算机。因此,手机上没有服务器可以侦听,因此会出错。要解决此问题,在尝试使用手机时,请将localhost更改为您计算机的IP,您可以在Windows中键入ipconfig
,在Linux中键入ifconfig
来学习。写下号码以192.168....
或10....
代替localhost
开头。这样它也适用于您的计算机。这也是将它发送到远程服务器时的原因。