2009-11-29 121 views
1

我討厭捲曲它是有太多的依賴過於龐大,當所有我需要做的是迅速打開一個URL。我甚至不需要檢索網頁的內容,我只需要向服務器發送GET HTTP請求。C++有沒有CURL的替代品?

什麼是最起碼這樣我可以做到這一點,就不多說了捲曲!@#$

+1

你是跨平臺的,或只是一個特定的一個? – 2009-11-29 19:12:06

+0

我想這是關於LibCURL而不是CURL – Lothar 2017-05-26 12:47:54

回答

5

lots of choices!嘗試libwww - 但被警告,大多數人都強烈希望libcurl。使用起來更容易。

+1

甚至當你在2009年回答它時完全放棄了圖書館。 – Lothar 2017-05-26 12:48:30

-1

system("wget -q -O file.htm http://url.com");

+1

當然這需要wget存在於目標機器上。 – 2009-11-30 01:04:20

+0

使用'system'通常不是一個好主意,特別是如果部分命令是由(不可信或愚蠢的)用戶提供的話。例如,如果用戶提供了「http://url.com; rm -rf〜'作爲url,該命令可能會刪除你的主目錄。 – chtz 2017-06-07 10:51:13

3

有一個很輕的方式,我已經實現了在英國大媒體提供一個高規模的後端服務時,這樣做我自己。

這種方法極其操作系統特定。

  1. 打開一個TCP套接字HTTP服務器
  2. 發送所需的HTTP/1.1和大多數虛擬服務器「GET /path/to/url HTTP/1.1\r\nHost: www.host.com\r\n\r\n」(在Host頭,不要忘了兩個空行和一個換行符要求回車以及爲HTTP標頭)
  3. 等待響應
  4. 關閉套接字

如果你想你可以在連接結束ALS關閉套接字o想要發送Connection: close\r\n作爲標題的一部分,以通知Web服務器您將在檢索網頁後終止連接。

如果你取一個編碼或生成的網頁在這種情況下,你必須添加邏輯來解釋提取的數據,您可能會遇到麻煩。

+0

如果您在調用任何套接字函數之前使用Win32,則必須初始化Windows套接字層。見http://www.nullterminator.net/winsock。html的教程 - 請注意,你想創建一個客戶端,而不是服務器。 – 2009-11-29 20:39:48

3

在Windows(Windows XP,Windows 2000 Professional SP3及更高版本)上,您可以使用WinHttpReadData API。該頁面底部還有一個例子。在MSDN

0

Windows HTTP服務

更多信息我已經使用Winsock的時候,我需要儘可能少的依賴可能和它運作良好。您需要編寫比使用單獨的庫或Microsoft WinHTTP庫更多的代碼。

你需要的函數是WSAStartup,socket,connect,send,recv,closesocket和WSACleanup。
參見用於send函數的樣本代碼。