我们正在尝试从 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 的 HttpURLConnection 直接访问 Blob 服务 REST API。
阅读Windows Azure 存储服务的身份验证,了解如何提供所需的
Authorization
请求标头。
您必须编写更多代码并了解如何调用所需的 API,但我可以证明这种方法是有效的。
我面临着同样的问题,所以我创建了一个类
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();