簡體   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