我按照这些步骤希望在localhost上运行存储模拟器。
我正在使用Windows 8 RTM。
写了这个简单的示例代码:
import com.microsoft.windowsazure.services.blob.client.CloudBlobClient;
import com.microsoft.windowsazure.services.blob.client.CloudBlobContainer;
import com.microsoft.windowsazure.services.core.storage.CloudStorageAccount;
public class AzureStore {
public static final String storageConnectionString = "DefaultEndpointsProtocol=http;"
+ "UseDevelopmentStorage=true;"
+ "AccountName=devstoreaccount1;"
+ "BlobEndpoint=http://127.0.0.1:10000;"
+ "AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==";
public static void main(String[] args) throws Exception {
// Retrieve storage account from connection-string
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("tweet");
try {
// Create the container if it does not exist
System.out.println(container.createIfNotExist());
} catch (Exception e) {
e.printStackTrace();
}
}
}
它提供以下例外:
com.microsoft.windowsazure.services.core.storage.StorageException: The value for one of the HTTP headers is not in the correct format.
at com.microsoft.windowsazure.services.core.storage.StorageException.translateException(StorageException.java:104)
at com.microsoft.windowsazure.services.blob.client.CloudBlobContainer$2.execute(CloudBlobContainer.java:334)
at com.microsoft.windowsazure.services.blob.client.CloudBlobContainer$2.execute(CloudBlobContainer.java:291)
at com.microsoft.windowsazure.services.core.storage.utils.implementation.ExecutionEngine.executeWithRetry(ExecutionEngine.java:110)
at com.microsoft.windowsazure.services.blob.client.CloudBlobContainer.createIfNotExist(CloudBlobContainer.java:339)
at com.microsoft.windowsazure.services.blob.client.CloudBlobContainer.createIfNotExist(CloudBlobContainer.java:257)
at AzureStore.main(AzureStore.java:26)
我在这一点上感到困惑,因为可能是错的。有人能帮助我吗?
答案 0 :(得分:0)
有关URI类
的更多信息看看下面是否适合您。
URI BlobEndPoint = new URI("http://127.0.0.1:10000/devstoreaccount1");
CloudBlobClient bClient = new CloudBlobClient(BlobEndPoint, new StorageCredentialsAccountAndKey(AccountName,
AccountSecurityKey));
答案 1 :(得分:0)
我认为错误正在发生,因为API中的存储服务版本不正确。在您的代码中,您尝试在开发存储中创建blob容器。 “x-ms-version”请求标头值作为“2012-02-12”发送,虽然它是最新的但仍未得到开发存储的支持。开发存储仍支持“2011-08-18”。
如果您针对云存储尝试代码,则应该能够创建该blob容器。
如果您只是针对开发存储进行开发,那么您可以做的一件事就是从GitHub(https://github.com/WindowsAzure/azure-sdk-for-java/downloads)下载源代码并修改Constants.java中的以下代码行
public static final String TARGET_STORAGE_VERSION = "2012-02-12";
到
public static final String TARGET_STORAGE_VERSION = "2011-08-18";
再次编译源代码。这可能会破坏最新服务版本中引入的一些新功能(如异步复制blob等)。
其他选择是等待新SDK出来,并希望该版本的模拟器支持最新的存储服务版本。