【问题标题】:The API package 'urlfetch' or call 'Fetch()' was not found未找到 API 包“urlfetch”或调用“Fetch()”
【发布时间】:2013-05-30 10:52:17
【问题描述】:

我对 Google App Engine (GAE) 和 Glassware 开发(针对 Google Glass)非常陌生。

我在 NetbeansApache tomcat 上配置了 mirror-quickstart-java 项目,我也成功运行了该项目,但我遇到了麻烦。

我的要求是,我不想使用谷歌应用引擎来开发我自己的 Glassware,因为我想使用很少的第三方 API。此外,应用引擎不支持javax.imageioBufferedImage api。

我有以下问题

  1. 是否必须使用 Google app-engine 进行 mirror-quickstart-java/Glassware 开发?
  2. 如果不是,我在交换访问令牌时的“允许访问”步骤后收到以下错误。
message The API package 'urlfetch' or call 'Fetch()' was not found.

description The server encountered an internal error that prevented it from fulfilling this request.

com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'urlfetch' or call 'Fetch()' was not found.
    com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:100)
    com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:38)
    com.google.api.client.extensions.appengine.http.UrlFetchRequest.execute(UrlFetchRequest.java:75)
    com.google.api.client.http.HttpRequest.execute(HttpRequest.java:980)
    com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:299)
    com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:175)
    com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:78)
    com.google.glassware.AuthServlet.doGet(AuthServlet.java:56)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

【问题讨论】:

    标签: google-app-engine google-mirror-api google-glass


    【解决方案1】:

    将快速启动项目从 App Engine 移至另一个 J2EE 容器非常简单,但确实需要更改一些代码:

    1. UrlFetchTransport 的实例替换为NetHttpTransport 之类的替代项。这将影响AuthUtil.javaMirrorClient.java
    2. ListableAppEngineCredentialStore.java 替换为CredentialStore 的新实现,它适用于您喜欢的任何持久层(Hibernate、SQLite 等)。

    您还需要对依赖项管理和构建脚本进行一些更改,但您只能靠自己,因为这在很大程度上取决于您计划如何运行它。

    【讨论】:

      【解决方案2】:

      您的 Glassware 不需要使用 appengine。唯一的要求是订阅回复将使用 HTTPS 发送给您,因此您需要确保正确配置您的服务器以处理此问题。

      urlfetch 包是特定于 appengine 的。您应该确保从您的项目中删除 appengine 库,并重新编写任何引用它的代码以使用标准 java.net 库。由于这是身份验证的一部分,您可能需要使用另一种 OAuth2 方法,例如 Google+ Sign-In

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        • 2015-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多