C++ C+有卷曲替代品吗+;?
我讨厌CURL,它太庞大,依赖性太多,而我需要做的就是快速打开一个URL。我甚至不需要检索网页的内容,我只需要向服务器发出GET HTTP请求C++ C+有卷曲替代品吗+;?,c++,http,curl,C++,Http,Curl,我讨厌CURL,它太庞大,依赖性太多,而我需要做的就是快速打开一个URL。我甚至不需要检索网页的内容,我只需要向服务器发出GET HTTP请求 我能做的最简单的方法是什么?不要说卷曲@#$ 有!请尝试——但请注意,大多数人都非常喜欢libcurl。它更易于使用。系统(“wget-q-O file.htmhttp://url.com");有一种非常简单的方法,我自己在为英国的一家大型媒体提供商实施大规模后端服务时就这样做了 此方法非常特定于操作系统 打开HTTP服务器的TCP套接字 发送“GET/
我能做的最简单的方法是什么?不要说卷曲@#$ 有!请尝试——但请注意,大多数人都非常喜欢
libcurl
。它更易于使用。系统(“wget-q-O file.htmhttp://url.com");代码>有一种非常简单的方法,我自己在为英国的一家大型媒体提供商实施大规模后端服务时就这样做了
此方法非常特定于操作系统
打开HTTP服务器的TCP套接字
发送“GET/path/to/url HTTP/1.1\r\nHost:www.host.com\r\n\r\n
”(HTTP/1.1和大多数虚拟服务器都需要host
头,不要忘记这两个空行,换行符也需要回车符才能返回HTTP头)
等待回应
合上插座
如果要在连接结束时关闭套接字,可能还需要发送连接:close\r\n
作为标题的一部分,通知web服务器在检索网页后将终止连接
如果要获取编码或生成的网页,您可能会遇到问题。在这种情况下,您必须添加逻辑来解释获取的数据。在Windows(Windows XP、Windows 2000 Professional和SP3及以上版本)上,您可以使用API。该页底部还有一个示例
有关Windows HTTP服务的更多信息关于当我需要尽可能少的依赖项时,我使用了Winsock,并且它运行良好。与使用单独的库或Microsoft WinHTTP库相比,您需要编写更多的代码
您需要的功能有WSAStartup、socket、connect、send、recv、closesocket和WSACleanup。
请参阅函数的示例代码。您是跨平台的,还是只有一个特定的?我想这是关于LibCURL而不是curl的。如果您使用的是Win32,那么在调用任何套接字函数之前,您必须初始化Windows套接字层。有关教程,请参阅-请注意,您希望创建的是客户端,而不是服务器。即使在2009年回答时,也完全放弃了库。使用system
通常不是一个好主意,尤其是如果部分命令是由(不受信任或愚蠢的)用户提供的。例如,如果用户提供http://url.com; rm-rf~
作为url,该命令可能会删除您的主目录。