【问题标题】:Android Mobile Backend Starter fail with 404 not found... some timesAndroid Mobile Backend Starter 失败,找不到 404... 有时
【发布时间】:2013-06-02 04:25:02
【问题描述】:

昨天下午我创建了一个项目并开始部署移动后端。我编辑了客户端代码并成功插入了一些数据。

一段时间(几小时)后,我再次更改了客户端代码,插入失败并出现错误:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found

由于我没有对代码进行任何实质性更改,因此我得出结论认为错误出在应用引擎方面,因此我重新部署了项目并解决了问题。插入再次通过。

今天早上我回来了 404 错误。这次重新部署没有用。

我在应用引擎中得到的错误日志是:

Uncaught exception from servlet
javax.servlet.UnavailableException: com.google.api.server.spi.config.ApiConfigException: <Entity [GoogleCloudEndpointConfiguration("EndpointV1")]:
    clientIds = null
    audiences = null
>
.audiences was not of type String or List<String>.
    at org.mortbay.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:415)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:451)
    at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:57)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146)
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:439)
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:480)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:487)
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:774)
    at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:751)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:342)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:334)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:484)
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
    at java.lang.Thread.run(Thread.java:722)

知道发生了什么,我能做些什么来解决它?

【问题讨论】:

  • 我无法使用留言簿活动示例进行单次插入。错误:我的 android 应用程序中显示了带有此错误的 toast:com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found Not Found。 (我正在使用 Android Studio)

标签: android google-app-engine backend


【解决方案1】:

我不完全明白发生了什么,但我找到了一种方法来摆脱客户端的 404 错误,这是由于 App Engine 端没有响应造成的。应用引擎日志中报告的错误涉及应用的受众和客户端 ID。这些是您在为“由客户端 ID 保护”配置身份验证时设置的值。

我发现如果我在其中放入一些占位符字符串值,保存,然后返回“打开(仅供开发使用)”并再次保存,应用程序引擎将不再出现配置错误并会响应客户端 Android 应用。

目前我只到在留言簿数据中进行条目的地方。但这绝对让我重新开始。我希望如果我完全设置了身份验证,问题就不会再出现了。

【讨论】:

  • 伙计,我差点落泪。这个问题让我发疯了好几个星期,我知道我永远猜不到那个解决方案。它有效......我只想给你买杯啤酒并给你一个拥抱:')(说真的,你让我开心)
  • 很高兴它有帮助。我终于得到了 Geek Serendipity 工作的整个 Google IO 演示,这就是我遇到问题的地方。对于其他寻找好例子的人,请查看 Brad Abrams 的博客文章:bradabrams.com/2013/05/…
  • #Bill Lahti 你有一个可以在 GitHub 上发布的 Android Studio 项目吗,因为这让我发疯了...
  • @Anthony。抱歉,没有。我一直在使用 Eclipse。
  • 我认为问题出在没有这些值的情况下实例失败的事实。此外,随着控制台最近的变化,这不再是现成的;在这里查看我的答案stackoverflow.com/a/18599404/549510
【解决方案2】:

我遇到了同样的错误,在云控制台上重新部署后端应用后错误消失了。

【讨论】:

  • 我试过了,但“有点”没用。有时它在一次或多次重新部署后起作用。有时不要。每次我都变得更加疯狂。
  • 这对我有用,但我也尝试了上面 Bill Lahti 的修复,所以我不知道两者的组合是否对它进行了排序......
【解决方案3】:

我发现重新部署后会创建一个新版本,而不是重置默认版本。 选择此新版本时,作为“默认”一切正常工作。

在(主要/版本)选择实例作为默认值:

https://appengine.google.com/adminlogs?&app_id=<project_id>

查看:

https://<project_id>.appspot.com/_ah/api/explorer

【讨论】:

    【解决方案4】:

    这是完美的解决方案。

    登录到应用引擎。单击左侧的实例。 在右下角,您会看到“关机”选项

    点击关机。 (关机不只是关机。它是重新启动)。

    实例在 10-12 秒内启动。注意:在这 10-12 秒内,无法访问应用引擎。因此,如果您的应用是实时的,那么您的云在这 10-12 秒内将无法运行。

    10 秒后刷新页面并确保您看到“关闭”选项。这意味着您的实例已重新启动。

    现在,重试,它会工作。如果您仍有问题,请发送电子邮件至 jscript12@gmail.com

    【讨论】:

    • 检查@Bill Lathi 提供的已接受答案。它对我有用,我再也没有遇到同样的问题。
    • 是的,我按照@Bill Lathi 的建议做了,但这并没有帮助。我发的那个对我有帮助。目前,我不确定究竟是什么导致了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2014-06-07
    • 1970-01-01
    相关资源
    最近更新 更多