2015-04-19 106 views
0

首先,我意識到我不是第一個問這個問題的人,但我確實需要與libcurl不同的解決方案。使URL請求和閱讀字符串

我想要做的事情基本上是向服務器發出HTTP請求,並將響應讀入std :: string值(char *或CString也不錯)。 (我需要做靜態鏈接;我不能將DLL與應用程序一起發送,我希望儘可能小,curl使我的應用程序大約3M)。

感謝您的幫助!

+2

cURL和它的庫相比很多其他庫* *很小*。與其他大型(*多*更大)框架的HTTP庫相比,它也只做了一件事,而且做得很好。 cURL庫也可以在沒有問題的情況下構建到靜態庫中,現代鏈接器的好處在於它們不會引入未使用的庫代碼。獲得小型圖書館的唯一方法就是自己創建一個圖書館,但是必須能夠處理HTTP的所有怪癖和角落案例。 –

+0

另外,你提到了'CString',它表明你正在使用MFC框架,它的*方式比cURL大。它還表明你的目標是Windows,即使在最小的Windows手機系統上,幾MB也不是很多。 –

回答

1

我有完全相同的問題,我的解決辦法是:

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"); 

這是因爲臨時文件的一點點不準確的,但它爲我工作,我希望這將是對你有用。