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

GAE:如何通过一个没有使用Java部署在GAE上的外部Web服务访问存储在GAE Blobstore中的数据/文件,java,web-services,google-app-engine,blobstore,Java,Web Services,Google App Engine,Blobstore,在GAE中,我有一个在GAE blobstore服务中存储文件的应用程序。存储数据后,还应将其发送到未部署在GAE上的外部Web服务。我使用Java 我的第一个想法是使用JAX-RPC(用于基于XML的RPC的Java API)和SAAJ(用于Java的带附件的SOAP API),如中所述,但我无法在GAE上部署Axis2框架,因为我遇到了套接字异常(GAE中不允许)。其想法是将数据推送到外部web服务 在第二次尝试中,我想从GAE中提取数据,这意味着通过外部Web服务直接访问Blobstore

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

我的第一个想法是使用JAX-RPC(用于基于XML的RPC的Java API)和SAAJ(用于Java的带附件的SOAP API),如中所述,但我无法在GAE上部署Axis2框架,因为我遇到了套接字异常(GAE中不允许)。其想法是将数据推送到外部web服务

在第二次尝试中,我想从GAE中提取数据,这意味着通过外部Web服务直接访问Blobstore中的文件。在GAE的管理控制台中,可以下载BLOB。因此,我认为,我可以通过将blob的密钥传递给外部Web服务来使用java.net.URL获取我的文件,从而对我的外部Web服务执行相同的操作,如下所述:。此链接如下所示:

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

但是,它不起作用,因为webservice/www用户需要经过身份验证和授权才能访问该文件。据我所知,Google没有提供JavaAPI来从外部web服务登录GAE


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

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

url应该是这样的:

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

您的servlet将如下所示:

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