我讨厌卷曲它是有太多的依赖过于庞大,当所有我需要做的是迅速打开一个URL。我甚至不需要检索网页的内容,我只需要向服务器发送GET HTTP请求。C++有没有CURL的替代品?
什么是最起码这样我可以做到这一点,就不多说了卷曲!@#$
我讨厌卷曲它是有太多的依赖过于庞大,当所有我需要做的是迅速打开一个URL。我甚至不需要检索网页的内容,我只需要向服务器发送GET HTTP请求。C++有没有CURL的替代品?
什么是最起码这样我可以做到这一点,就不多说了卷曲!@#$
有lots of choices!尝试libwww - 但被警告,大多数人都强烈希望libcurl
。使用起来更容易。
甚至当你在2009年回答它时完全放弃了图书馆。 – Lothar 2017-05-26 12:48:30
system("wget -q -O file.htm http://url.com");
当然这需要wget存在于目标机器上。 – 2009-11-30 01:04:20
使用'system'通常不是一个好主意,特别是如果部分命令是由(不可信或愚蠢的)用户提供的话。例如,如果用户提供了“http://url.com; rm -rf〜'作为url,该命令可能会删除你的主目录。 – chtz 2017-06-07 10:51:13
有一个很轻的方式,我已经实现了在英国大媒体提供一个高规模的后端服务时,这样做我自己。
这种方法极其操作系统特定。
GET /path/to/url HTTP/1.1\r\nHost: www.host.com\r\n\r\n
”(在Host
头,不要忘了两个空行和一个换行符要求回车以及为HTTP标头)如果你想你可以在连接结束ALS关闭套接字o想要发送Connection: close\r\n
作为标题的一部分,以通知Web服务器您将在检索网页后终止连接。
如果你取一个编码或生成的网页在这种情况下,你必须添加逻辑来解释提取的数据,您可能会遇到麻烦。
如果您在调用任何套接字函数之前使用Win32,则必须初始化Windows套接字层。见http://www.nullterminator.net/winsock。html的教程 - 请注意,你想创建一个客户端,而不是服务器。 – 2009-11-29 20:39:48
在Windows(Windows XP,Windows 2000 Professional SP3及更高版本)上,您可以使用WinHttpReadData API。该页面底部还有一个例子。在MSDN
上Windows HTTP服务
更多信息我已经使用Winsock的时候,我需要尽可能少的依赖可能和它运作良好。您需要编写比使用单独的库或Microsoft WinHTTP库更多的代码。
你需要的函数是WSAStartup,socket,connect,send,recv,closesocket和WSACleanup。
参见用于send函数的样本代码。
你是跨平台的,或只是一个特定的一个? – 2009-11-29 19:12:06
我想这是关于LibCURL而不是CURL – Lothar 2017-05-26 12:47:54