android - Sencha Touch 2.1 native (android)应用程序无法从远程获取 json(它适用于 PC)

标签 android json proxy sencha-touch touch

我通过观看此视频 ( http://youtu.be/5F7Gx0-W-M4 ) 创建了我的第一个 Sencha touch 2 应用程序,它的商店页面结构如下:

Ext.define('FirstApp.store.Places',{
    extend:'Ext.data.Store',

    config:{

        autoLoad:true,
        model:'FirstApp.model.Place',
        proxy:{
            type:'ajax',
            url:'https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=AIzaSyCFWZSKDslql5GZR0OJlVcgoQJP1UKgZ5U',
            reader:{
                type:'json',
                rootProperty:'results'
            }
        }
    }
})

构建后(运行“sencha app build native”之后)包在我的 MAC(所有浏览器)上运行良好,但生成的应用程序(我在我的 Nexus 手机上运行它)可以运行,但不会收集任何数据来自谷歌地图 json。 任何帮助将不胜感激

最佳答案

您引用的示例是使用谷歌地图的地点搜索 API。当您构建 proxy 设置为 ajax 的手机应用程序时,您无法使用此 API。基本上,您不能使用您域之外的任何资源。就像如果您的网站位于 yourdomain.com 并且有 someotherdomain.com,那么您无法向此 someotherdomain.com 发出 ajax 请求来自 yourdomain.com,除非该域允许您这样做。在这种情况下,您的移动应用程序没有任何域。您只是在 webview 中加载一个页面。

原因是ajax将无法加载跨域资源。应用程序构建适用于浏览器,因为我相信您使用带有 --disable-web-security 标志的 chrome。要使用 CORS,您需要使用 JsonP 代理。如果您要打包移动应用程序,这是唯一的方法。如果在某种情况下,您拥有服务器(但不在本上下文中),那么您可以通过设置适当的 header (例如

)来允许 CORS
Access-Control-Allow-Origin: *

Access-Control-Allow-Origin: http://yourdomain.com/resource

尝试将代理设置为 JsonP 。

关于android - Sencha Touch 2.1 native (android)应用程序无法从远程获取 json(它适用于 PC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14777948/

相关文章:

java - 试图计算手机解锁的次数

java - 如何在httpurlconnection android中添加参数

python - 使用 Flask 和 gunicorn 进行 JSON 格式的日志记录

java - 将 JsonObject 转换为 JsonArray 时出错

design-patterns - Facade、Proxy、Adapter 和 Decorator 设计模式之间的区别?

linux - 使用 cURL 执行 HTTP 请求(使用 PROXY)

android - PRIORITY_BALANCED_POWER_ACCURACY 是否排除 GPS 提供商?

java - 如何使用Java在SQL查询中指定数据库

c - 在 C 中的服务器和客户端应用程序中通过套接字发送和接收 JSON

Firebase Firestore Web 无法在公司代理后面工作