我正在使用Ionic框架中的第一个Android应用程序。我的应用程序应该与AngularJS的REST接口进行通信。当我在我的电脑上的浏览器中测试应用程序时,一切正常,但是当我从虚拟或真实的Android设备运行它作为Android应用程序时,POST请求根本不起作用。 GET请求完美运行。我不知道为什么会这样,所以我感谢任何帮助!
部分代码:
$http({
url: address,
method: "POST",
data: jsondata,
transformRequest: false,
headers: { 'Content-Type': undefined }
})
.success(function (data) {
$scope.errormsg = "success";
reloadComments();
})
.error(function (data) {
$scope.errormsg = data;
});
答案 0 :(得分:1)
如果您使用的是较新版本的Cordova(或最新的Ionic CLI)来开发您的应用,则当您的应用尝试发出网络请求时,您可能会遇到http 404错误。
使用Cordova白名单插件可以快速解决这个问题!要安装它,只需在项目的目录中运行以下命令:
离子插件添加https://github.com/apache/cordova-plugin-whitelist.git
请参阅此链接了解更多详情: http://docs.ionic.io/docs/cordova-whitelist
答案 1 :(得分:0)
您必须转换对象中的所有参数,然后您必须调用Web服务,如下例所示。
$scope.submitForm = function($valid)
{
myobject = {'email' : $scope.user.email, 'pass' : $scope.user.pass};
Object.toparams = function ObjecttoParams(obj)
{
var p =[];
for (var key in obj)
{
p.push(key + '=' + encodeURIComponent(obj[key]));
}
return p.join('&');
};
$http({
url: WSURL + '/login',
method: "POST",
data: Object.toparams(myobject),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function (data, status, headers, config)
{
}).error(function (data, status, headers, config)
{
});
}
我希望对你有所帮助