繁体   English   中英

PhoneGap Ionic项目无法在iOS设备上执行$ http.post

[英]PhoneGap Ionic project not performing $http.post on iOS device

我正在使用Ionic框架构建html5应用程序,然后使用PhoneGap将其部署到iOS设备。 一切工作正常,然后我们切换了一些用于获取数据的服务器地址,以在该地址中包括端口号,然后将HTTP方法从GET切换为POST。 切换之后,我们在浏览器中进行了本地测试,它可以毫无问题地提取数据。 当我们部署到设备上时,执行请求时日志中什么也看不到,并且成功或错误处理程序从未到达过。 在下面的代码中,仅打印“ HERE1”,并且一切停止。

console.log("HERE1");
$http.post("http://XX.XX.XX.XX:81/api/Authenticate", null ,{ headers: {'Authorization': 'Basic ' + encodedNamePw} })
            .success(function (data, status, headers, config) {
                console.log("HERE2");
            })
            .error(function (data) {
                console.log("HERE3");
            });

然后,我尝试对相同的地址执行GET并得到响应,并说我显然使用了错误的方法。 然后,我尝试将POST发送到没有端口的地址,并得到响应,这又是一个错误,但至少我得到了响应。 因此,总结一下,它可以在浏览器中本地运行,可以在带有GET请求和PORT的iOS设备上运行,但是当我使用POST方法时,它不会发出任何请求。 我确实试图逃脱结肠,但这没有帮助。 我对此感到很困惑,所以任何想法都值得赞赏。 谢谢!

经过一番痛苦之后,我发现了问题和可用的选项。 问题是我们收到401响应和www-authenticate http标头。 当服务器发送此消息时,iOS显然尝试弹出一个登录对话框,该对话框被PhoneGap阻止。 它没有使用错误回调方法,而是直接吃掉了它,并且您永远不会收到请求已完成的任何反馈。

最好的解决方案要求您有权访问正在呼叫的服务器。 如果这样做,则可以更新响应以不为401响应发送www-authenticate标头,那么您会很高兴,并且可以按预期工作。 如果不能,则可以选择将请求的异步选项设置为false。 这种方法将阻止UI,这不是理想的方法,但如果只是登录请求,则可以接受。 祝你好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM