繁体   English   中英

GAE:如何通过未使用Java部署在GAE上的外部Web服务来访问存储在GAE Blobstore中的数据/文件?

[英]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 Java

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

我的第一个想法是使用JAX-RPC(基于XML的Java的Java API)和SAAJ(SOAP with Attachments API for Java),如http://www.ibm.com/developerworks/xml/library/x-中所述。 tippass /但是我无法在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。

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

您可以在GAE应用程序中创建一个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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM