PhoneGap + Android + jQuery Mobile - 连接服务器失败

时间:2012-07-12 19:00:56

标签: android jquery json jquery-mobile cordova

我正在尝试使用Phonegap(版本1.9.0)和jQuery Mobile(1.1.0)创建一个Android(2.2)应用程序。具体来说,应用程序应该向现有的WCF REST服务发送GET请求并检索JSON数据(文件夹列表),并在选择下拉菜单中将每个项目显示为选项。

现在,当我使用桌面浏览器时,所有这些都能正常工作。 WCF REST服务发送正确的响应,浏览器正确呈现页面并将选项放在我想要的选择菜单中。但是,当我使用Phonegap在Android应用程序中使用以下代码时:

$.getJSON('http://xxx.xxx.xxx/MobileService.svc/GetFolders?callback=?', null, function (folders) {                  
    $.each( folders, function( i, folder ) {
        $("#folders").append("<option value='"+folder.Id+"'>"+folder.Name+"</option>");
    });
    $("#folders").selectmenu("refresh");
});

...当我启动Android应用程序(在物理设备上调试)时,我收到错误消息:

Connection to the server was unsuccessful. ("file:///android_asset/www/index.html")

当我注释掉上面的$ .getJSON代码时,应用程序加载正常,但选择菜单未填充。

我也注意到,显然因为Phonegap使用“file://”协议,它不受“http://”协议的“同源策略”的影响......我曾经当我使用浏览器时使用JSONP,这就是我有回调的原因。我不认为这应该是失败的原因,但我不知道。任何帮助将不胜感激!

我尝试过的事情:

  • 将访问来源更改为cordova.xml中的“。*”

  • 添加'super.setIntegerProperty(“loadUrlTimeoutValue”,60000);'参加活动

2 个答案:

答案 0 :(得分:1)

您可以尝试将您的cordova.xml设置为"*"而不是".*",如Getting Started Guide

所示

甚至更好:

 http://xxx.xxx.xxx

答案 1 :(得分:1)

事实证明,在我的特定情况下,问题归结为访客wifi网络上的移动电话无法访问托管REST服务的网络,因此连接被阻止。

希望可以帮助某人