【问题标题】:PhoneGap + Android + jQuery Mobile - Connection to server unsuccessfulPhoneGap + Android + jQuery Mobile - 连接到服务器不成功
【发布时间】:2012-07-12 19:00:55
【问题描述】:

我正在尝试使用 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);'去活动

【问题讨论】:

  • 我尝试重新启动模拟器,错误消失了。原因是我在启动模拟器时网络中断了,所以它无法恢复网络连接..所以我重新启动了我的模拟器。

标签: android jquery json jquery-mobile cordova


【解决方案1】:

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

甚至更好:

 http://xxx.xxx.xxx

【讨论】:

  • 我只是尝试将它设置为这两个,不幸的是它们都不适合我。
  • 试试看能否从手机本地文件中获取JSON。
【解决方案2】:

在我的特殊情况下,问题归结为手机位于访客 wifi 网络上,该网络无法访问托管 REST 服务的网络,因此连接被阻止。

希望能帮助到别人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多