環顧四周,發現一些答案,表明我應該使用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