Azure CloudStorageAccount Android:从 android 访问 blob

问题描述 投票:0回答:2

我们正在尝试从 java 客户端应用程序 (Android) 访问 azure blob 存储。 以下教程对此进行了解释:Tutorial Blob Java

从 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");
android azure blob azure-blob-storage
2个回答
0
投票

作为解决方法,您可以使用 Android 的 HttpURLConnection 直接访问 Blob 服务 REST API

阅读Windows Azure 存储服务的身份验证,了解如何提供所需的

Authorization
请求标头。

您必须编写更多代码并了解如何调用所需的 API,但我可以证明这种方法是有效的。


0
投票

我面临着同样的问题,所以我创建了一个类

public class AzureManager {
    public static final String storageConnectionString = "DefaultEndpointsProtocol=https;"
        + "AccountName=[account_name];"
        + "AccountKey=[account_key];"
        + "EndpointSuffix=core.windows.net";
    }

    private CloudBlobClient blobClient;
    private static CloudBlobContainer container;

    public AzureManager() {
        try {
            // Parse the connection string and create a Blob service client
            CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
            blobClient = storageAccount.createCloudBlobClient();

            // Retrieve a reference to a container
            container = blobClient.getContainerReference([container_name]);
            container.createIfNotExists();
        } catch (Exception e) {
            e.printStackTrace();
        }
}

然后我在活动或片段中使用了这样的:

AzureManager azureManager = new AzureManager();
© www.soinside.com 2019 - 2024. All rights reserved.