首先,我意識到我不是第一個問這個問題的人,但我確實需要與libcurl不同的解決方案。使URL請求和閱讀字符串
我想要做的事情基本上是向服務器發出HTTP請求,並將響應讀入std :: string值(char *或CString也不錯)。 (我需要做靜態鏈接;我不能將DLL與應用程序一起發送,我希望儘可能小,curl使我的應用程序大約3M)。
感謝您的幫助!
首先,我意識到我不是第一個問這個問題的人,但我確實需要與libcurl不同的解決方案。使URL請求和閱讀字符串
我想要做的事情基本上是向服務器發出HTTP請求,並將響應讀入std :: string值(char *或CString也不錯)。 (我需要做靜態鏈接;我不能將DLL與應用程序一起發送,我希望儘可能小,curl使我的應用程序大約3M)。
感謝您的幫助!
我有完全相同的問題,我的解決辦法是:
DeleteUrlCacheEntryA("http://example.com/file.txt");
DWORD state = URLDownloadToFileA(NULL, "http://example.com/file.txt", "file.txt", 0, NULL);
if (state != S_OK)
{
// can not download...
return;
}
std::ifstream file("file.txt");
std::string result((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
file.close();
DeleteFileA("file.txt");
這是因爲臨時文件的一點點不準確的,但它爲我工作,我希望這將是對你有用。
考慮到你顯然將windows作爲平臺的目標,你可以考慮使用windows http services api。
它不能移植到其他平臺,但它具有內置的優勢。MSDN在how to use it上提供了大量解釋和示例。
cURL和它的庫相比很多其他庫* *很小*。與其他大型(*多*更大)框架的HTTP庫相比,它也只做了一件事,而且做得很好。 cURL庫也可以在沒有問題的情況下構建到靜態庫中,現代鏈接器的好處在於它們不會引入未使用的庫代碼。獲得小型圖書館的唯一方法就是自己創建一個圖書館,但是必須能夠處理HTTP的所有怪癖和角落案例。 –
另外,你提到了'CString',它表明你正在使用MFC框架,它的*方式比cURL大。它還表明你的目標是Windows,即使在最小的Windows手機系統上,幾MB也不是很多。 –