环顾四周,发现一些答案,表明我应该使用REST。但是,我如何将它整合到Qt/C++中?任何人都可以链接一些例子或者几行代码?会真的很感激它!访问Azure blob存储使用C++
0
A
回答
1
请检查出this question。它涵盖了您所要求的内容,并概述了几个免费提供的C++库,您可以使用它们来访问Azure服务。
2
我花了很多时间来实现它。最棘手的是你必须解码你的主键。在this question的帮助下,我决定使用OpenSSL,并且已经制作了下面的代码。
QString datastring = "GET\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:" + date + "\nx-ms-version:2009-09-19\n/myStorage/\ncomp:list";
QByteArray ba = datastring.toUtf8();
unsigned char* signature = reinterpret_cast<unsigned char*>(ba.data());
QByteArray kba = QByteArray::fromBase64("theStorageAccountKey");
unsigned char* key = (unsigned char*) kba.data();
unsigned char result[EVP_MAX_MD_SIZE];
unsigned int result_len;
ENGINE_load_builtin_engines();
ENGINE_register_all_complete();
HMAC_CTX ctx;
HMAC_CTX_init(&ctx);
HMAC_Init_ex(&ctx, key, strlen((const char*)key), EVP_sha256(), NULL);
HMAC_Update(&ctx, signature, strlen((const char*)signature));
HMAC_Final(&ctx, result, &result_len);
HMAC_CTX_cleanup(&ctx);
QByteArray array = QByteArray::fromRawData((char*)result, result_len);
array = array.toBase64();
qDebug() << "signature hash" << array;
QString version = "2009-09-19";
//requesting the list of container to Windows Azure
QNetworkAccessManager* manager = new QNetworkAccessManager();
QNetworkRequest request;
request.setUrl(QUrl("http://myStorage.blob.core.windows.net/?comp=list"));
request.setRawHeader("Authorization","SharedKey myStorage:" + array);
request.setRawHeader("x-ms-date", date.toStdString().c_str());
request.setRawHeader("x-ms-version", version.toStdString().c_str());
QNetworkReply *reply = manager->get(request);
connect(reply, SIGNAL(readyRead()), this, SLOT(manageCloudReply()));
我希望它能帮助别人。
相关问题
- 1. 使用Codeigniter访问Azure blob存储
- 2. 访问的Windows Azure Blob存储
- 3. 从Azure存储blob访问元数据
- 4. 访问Amazon EMR中的Azure blob存储
- 5. Azure Blob存储的事务访问
- 6. Windows Azure本地Blob存储访问?
- 7. 使用C#使用Coldfusion通过REST访问Azure blob存储示例
- 8. 使用bash访问Azure blob存储,卷曲
- 9. 访问Azure内的blob存储使用带宽吗?
- 10. Azure Blob存储列表Blob
- 11. Azure blob存储 - blob策略
- 12. 超时:从Azure ML实验中访问Azure blob存储
- 13. Azure DocumentDB和Azure Blob存储
- 14. Azure blob存储SAS
- 15. node.js azure存储blob
- 16. Azure的Blob存储
- 17. 访问登录用户的Azure Blob存储
- 18. 从VB6应用程序访问Azure Blob存储
- 19. 如何通过Flex应用程序访问Azure blob存储?
- 20. 从WinRT应用程序访问Azure Blob存储
- 21. 从本地IIS应用程序访问Azure Blob存储
- 22. Azure blob存储共享访问策略应用/删除
- 23. Azure Web作业Redis(RedLock)和Blob存储访问问题
- 24. Azure搜索Blob存储无法使用。
- 25. 使用SAS的Azure Blob存储授权
- 26. 从Azure Blob存储使用ascx文件
- 27. 计算需要使用Azure blob存储?
- 28. 使用Https的Azure Blob存储
- 29. 与https使用Azure Blob存储REST api
- 30. 使用类库访问Windows Azure存储
http://stackoverflow.com/questions/8471810/accessing-azure-storage-tables-from-c-code/9476451#9476451 – chikuba 2012-02-28 21:50:03