2013-07-05 64 views
1

我們正試圖從java客戶端應用程序(Android)訪問azure blob存儲。 以下教程對此進行了說明:教程Blob JavaAzure CloudStorageAccount Android:從android中訪問blob

從eclipse啓動應用程序時發生異常。 「無法找到方法com.microsoft.windowsazure.services.core.storage.utils.utility.createXMLstreamReaderFromReader引用的方法javax.xml.stream.xmlinputfactory.newinstance」。

似乎azure使用的是Android中不存在的XML庫。

下面的代碼片段:

public static final String storageConnectionString = 
     "DefaultEndpointsProtocol=http;" + 
     "AccountName=myaccountname;" + 
     "AccountKey=myaccountkey"; 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    FileOutputStream FileXml = null; 
    // Retrieve storage account from connection-string 
    try { 
     CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString); 
     // Create the blob client 
     CloudBlobClient blobClient = storageAccount.createCloudBlobClient(); 
     // Get a reference to a container 
     // The container name must be lower case 
     CloudBlobContainer container = blobClient.getContainerReference("weetjesandroid"); 
+0

爲什麼你從Android訪問blob並在應用程序中暴露你的賬戶密鑰?它應該在服務器端。由於您可能有多個客戶端應用程序將項目存儲在BLOB存儲中,因此最好將其保存在服務器端。您可以將此主機用作WebAPI服務並從不同的客戶端調用。 –

回答

0

您也可以使用Android的HttpURLConnection直接訪問Blob Service REST API一種解決方法。

閱讀Authentication for the Windows Azure Storage Services瞭解如何提供所需的Authorization請求標頭。

您必須編寫更多的代碼並理解如何調用所需的API,但我可以證明這種方法可行。

+0

我通過這個命令訪問了一個公共blob,http://accountName.blob.core.windows.net/ContainerName/BlobName.xml。 我也嘗試通過這個命令訪問一個私人blob,但沒有成功: http://portalvhdsqlt2gqj2g4vw7.blob.core.windows.net/weetjesandroidsecured/BlobAzureWeetjes1.xml HTTP/1。 Authorization =「SharedKey AccountName:PrimaryKeyAzure」 x-ms-date:Tue,2010年8月17日21:41:56 GMT 我應該更改哪些內容才能使其工作。 – JVGAG

+0

@JVGAG,也許你的評論被截斷。顯示的內容不是命令,只有URL。我建議你用你用於這些命令的代碼更新你的問題。而且,您是否按照建議使用了HttpURLConnection? –