【问题标题】:GAE: How is it possible to access data/files that are stored in the GAE Blobstore by an external Web Service that is not deployed on GAE using JavaGAE:如何通过未使用 Java 部署在 GAE 上的外部 Web 服务访问存储在 GAE Blobstore 中的数据/文件
【发布时间】:2012-03-21 09:20:01
【问题描述】:

在 GAE 中,我有一个将文件存储在 GAE blobstore 服务中的应用程序。数据存储后,还应发送到未部署在 GAE 上的外部 Web Service。我使用Java。

我的第一个想法是使用 http://www.ibm.com/developerworks/xml/library/x-tippass/ 中所述的 JAX-RPC(基于 XML 的 RPC 的 Java API)和 SAAJ(Java 的带附件 API 的 SOAP),但我无法在 GAE 上部署 Axis2 框架因为我得到了套接字异常(GAE 中不允许)。想法是将数据推送到外部 Web 服务。

在我的第二次尝试中,我想从 GAE 中提取数据,这意味着通过外部 Web 服务直接访问 Blobstore 中的文件。在 GAE 的管理控制台中,可以下载 blob。因此,我认为,我可以通过将 blob 的密钥传递给外部 Web 服务以使用 java.net.URL 来获取我的文件,来对我的外部 Web 服务执行相同的操作,此处类似描述:http://code.google.com/intl/de-DE/appengine/docs/java/urlfetch/overview.html。此链接如下所示:

String blobFileUrl = "https://appengine.google.com/blobstore/download?app_id=s~gae_app&key=" + gaeBlobKey;

但是,它不起作用,因为需要对 webservice/www-user 进行身份验证和授权才能访问该文件。据我所知,Google 不提供 Java API 来从外部 Web 服务登录 GAE。

是否可以使用 Java 使用未部署在 GAE 上的外部 Web 服务访问 GAE 的 blob/数据?如果有,怎么可能?

【问题讨论】:

    标签: java web-services google-app-engine blobstore


    【解决方案1】:

    您可以在您的 GAE 应用程序中创建一个 servlet,该 servlet 只提供一个给定 blob 密钥的 blob。

    网址应该是这样的:

    http://appid.appspot.com/blobserve?blobKey=3asdfg324gdasdf

    你的 servlet 看起来像这样:

    public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws IOException {
        BlobKey blobKey = new BlobKey(req.getParameter("blobKey"));
        blobstoreService.serve(blobKey, res);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 2012-03-11
      • 2016-11-17
      相关资源
      最近更新 更多