我希望在我的phonegap应用程序中执行API方法来检索数据存储中的所有条目。我一直在三星 S4 上对此进行测试,似乎无法在控制台中收到任何错误或任何内容,并且数据存储区的日志表明尚未尝试从数据存储区检索数据。
我将在下面发布我的 base.js 文件,该文件是假设执行 API 调用的函数。
我一直在关注这个guide由 Google 创建来实现这一点。该方法适用于 POST 而不是 GET,因为根据我遵循的另一个教程,您必须通过 post 方法而不是 get 方法请求数据。
var requestData = {};
google.appengine.CMS.client.getCalls = function() {
gapi.client.call.queryCalls(requestData).execute(function(resp) {
if (!resp.code) {
resp.calls = resp.calls || [];
var result = "";
for (var i=0;i<resp.calls.length;i++) {
result = result+ resp.calls[i].callId+ " : " + resp.calls[i].patientName+ " : " + resp.calls[i].doctor+ " : " + "<br/>" + resp.calls[i].address1+ " : " + resp.calls[i].address2+ " : " + resp.calls[i].address3+ " : " + "<br/>" + resp.calls[i].postCode + " : " + resp.calls[i].patientLocation+ " : " + resp.calls[i].symptoms+ " : " + "<br/>" + resp.calls[i].contactNumber+ " : " + resp.calls[i].callDateTime+ " : " + resp.calls[i].currentStatus+ "<br/>";
}
return result;
google.appengine.CMS.client.print(resp);
}
});
};
/**
* Enables the button callbacks in the UI.
*/
google.appengine.CMS.client.enableButtons = function() {
var ListCalls = document.querySelector('#listCalls');
ListCalls.addEventListener('click', google.appengine.CMS.client.getCalls);
};
/**
* Initializes the application.
* @param {string} apiRoot Root of the API's path.
*/
var apiRoot = 'generic root';
google.appengine.CMS.client.init = function(apiRoot) {
// Loads the OAuth and helloworld APIs asynchronously, and triggers login
// when they have completed.
var apisToLoad;
var callback = function() {
if (--apisToLoad == 0) {
google.appengine.CMS.client.enableButtons();
}
};
apisToLoad = 1; // must match number of calls to gapi.client.load()
gapi.client.load('call', 'v1', callback, apiRoot);
};
最佳答案
如果您使用打包的phonegapp应用程序,即显示本地主机的Web View ,您需要:
- 授权 localhost 源的客户端 ID,如下所示 [1]
- 使用对端点的绝对引用,而不是使用 window.location.host,如下所示 [2]
- 或按照本部分 [3]
我建议您使用直接指向*.appspot.com 上页面的phonegap 应用程序,而不是将其复制到应用程序上:
- 无需用户交互即可更新应用
- 更好的开发,因为您可以在phonegap之外测试应用
- 切换 appengine 版本并自动将所有用户更新为最新版本
[2] https://cloud.google.com/appengine/docs/java/endpoints/getstarted/clients/js/client_ui
而不是
<script>
function init() {
google.appengine.samples.hello.init('//' + window.location.host + '/_ah/api');
}
</script>
<script src="https://apis.google.com/js/client.js?onload=init"></script>
使用
<script>
function init() {
google.appengine.samples.hello.init('https://youappid.appspot.com/_ah/api');
}
</script>
<script src="https://apis.google.com/js/client.js?onload=init"></script>
[3] https://cloud.google.com/appengine/docs/java/endpoints/consume_js
关于java - 在phonegap应用程序中调用应用程序引擎API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232732/