找不到API包'urlfetch'或调用'Fetch()'

时间:2013-05-30 10:52:18

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

我是Google App Engine(GAE)和Glassware开发(Google Glass)的新手。

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

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

我有以下问题

  1. 是否必须使用Google app-engine进行mirror-quickstart-java / Glassware开发?
  2. 如果没有,我在交换访问令牌时“允许访问”步骤后收到以下错误。
  3. 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)
    

2 个答案:

答案 0 :(得分:5)

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

  1. UrlFetchTransport的实例替换为NetHttpTransport之类的替换。这会影响AuthUtil.javaMirrorClient.java
  2. ListableAppEngineCredentialStore.java替换为CredentialStore的新实现,该实现适用于您喜欢的任何持久层(Hibernate,SQLite等)。
  3. 您还需要对依赖项管理和构建脚本进行一些更改,但由于这在很大程度上取决于您计划如何运行它,因此您需要自己进行更改。

答案 1 :(得分:1)

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

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