环境
我正在使用Bootstrap JavaScript UI和Google SQL数据存储区运行AppEngine Cloud Endpoints。
问题
当Javascript调用gapi.client.load时,它获得404.API Explorer工作,JavaScript在本地运行时工作...只是在尝试通过JavaScript加载API时,我得到了失败。
以下是Chrome中显示的错误:
GET https://MyAppID.appspot.com/_ah/api/discovery/v1/apis/myAP…%2Cversion%2CrootUrl%2CservicePath%2Cresources%2Cparameters%2Cmethods&pp=0 404 ()
zu @ cb=gapi.loaded_0:83
n @ cb=gapi.loaded_0:83C
u @ cb=gapi.loaded_0:83
(anonymous function) @ cb=gapi.loaded_0:84
g @ cb=gapi.loaded_0:55
c @ cb=gapi.loaded_0:46
然后是“无法读取属性”的另一个例外,因为它无法在API中找到它未加载的方法。
代码
我的index.html页面的代码:
function init()
{
apisToLoad = 2;
var callback = function()
{
if (--apisToLoad == 0)
{
signin(true, userAuthed);
}
}
gapi.client.load('oauth2', 'v2', callback);
//LOCALCHANGE (SWITCH BETWEEN LOCAL AND NOT)
gapi.client.load('myAPI', 'v1', callback, 'https://MyAppId.appspot.com/_ah/api');
//gapi.client.load('myAPI', 'v1', callback, 'http://localhost:8080/_ah/api');
}
我认为这是对的,所以我也要包括我的appengine.xml:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>MyAppID</application>
<version>1</version>
<threadsafe>true</threadsafe>
<use-google-connector-j>true</use-google-connector-j>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
</appengine-web-app>
和我的web.xml:
<?xml version="1.0" encoding="utf-8" standalone="no"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>SystemServiceServlet</servlet-name>
<servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
<init-param>
<param-name>services</param-name>
<param-value>com.lthoi.myAPI</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SystemServiceServlet</servlet-name>
<url-pattern>/_ah/spi/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
如果有人能想到其他任何错误,我会很乐意粘贴其他文件。
答案 0 :(得分:0)
我和你有同样的问题。似乎谷歌有一个关于webapp端点的故障,这已经导致了这个问题很长一段时间......
以前关于它的帖子的链接: https://github.com/google/google-api-javascript-client/issues/147
(将帖子作为答案,而不是评论,只是创建了一个帐户)
答案 1 :(得分:0)
gapi.client.load查询发现以获取有关API的方法信息(请参阅为您提供404的URL上的发现部分)。目前,云端点不支持发现。
要解决此问题,您可以尝试直接调用API(实际上我并不完全确定这是否有效)。 e.g。
gapi.client.request({
// Use your own service address, URI path, and query parameters.
'root': 'https://your-domain.appspot.com',
'path': '_ah/api/foo/bar', // use your own service path
'params': {
"foo": "bar"
}
}).then(
function(resp) {
console.log(resp);
},
function(err) {
console.log(err);
});
希望这有帮助。
(请注意,此回复的上一个编辑中的CORS功能是实验性的,未记录的,并且不受支持,但在本答案中用于调试目的。已删除启用CORS的行。)
答案 2 :(得分:0)
所以,不幸的是,这里的问题是资本化问题。我有正确的网址,但我尝试加载“myAPI”#39;而不是MyAPI&#39;正如我在MyAPI.java中写的那样。请注意,它是注释中的值,而不是在这种情况下重要的类名。希望这能找到像我一样愚蠢的人!