好吧,我花了三天时间尝试这个,这就是场景:
我想从Google下载'.csv'文件,然后从文件中处理数据。它适用于Win32控制台应用程序。我有后者,我只是不能为我的生活弄清楚如何下载文件。我听说过libcurl,curlpp,ptypes,自己动手,只是使用.NET api,并且被告知了很多次:
......这只是一个GET请求
嗯,这一切都很好,但我必须错过一些东西,因为似乎每个人都知道如何做到这一点。我一直在梳理书籍,想要解决这个问题,甚至在使用“C ++的艺术”一段时间在路上旅行后,LNKerrors也遇到了很大的问题。
所有这一切,我从中学到了很多,但此时我只想知道如何去做。严重缺乏C ++ API,没有找到示例代码。在线教程几乎不存在。没有书似乎认为这很重要。
有人可以请我救生筏吗?我是一个处于边缘的人。
修改
“来自Google”我的意思是我想下载他们托管的.csv文件。一个例子可以是found here.
答案 0 :(得分:2)
您应该能够bend this达到您的意愿。
现在我已经回答了你的问题。为什么选择C ++?没有什么可以反对语言,但选择最好的语言来完成这项工作。 Perl,PHP和Python(我相信更多)都有很好的文档和支持这种操作。
在perl(我熟悉的那个)中,它只有大约3-5行代码。
答案 1 :(得分:2)
为什么不只使用已有的东西?
答案 2 :(得分:1)
由于您使用的是Win32平台,因此可以使用一个内置的库来以相对直接的方式实现GET请求:WinInet,它是Win32 SDK的一部分。 basic reference for WinInet可以在MSDN上找到。
请注意,如果您不熟悉Win32 API,将会有一些粗略的雪橇。有一个非常有用的示例代码块here
如果您未能将适当的库引用添加到项目中,则会出现链接器错误。听起来你已经在那里学到了一些课程所以我会保持它的简洁,但请放心,你会在Win32文档中找到你需要的库和头文件引用的引用(你只需要知道在哪里上寻找它的页面。)
答案 3 :(得分:1)
答案 4 :(得分:1)
另一个选项是WinHTTP,它也附带Windows。
答案 5 :(得分:1)
>没有找到示例代码
???
数十个样本已发布15年 请参阅api ng news://comp.os.ms-windows.programmer.win32 (C中的样本)
(COM,INET等)
答案 6 :(得分:1)
我也一直在为C ++寻找一个好的http lib,但还没找到'完美'的lib。对于一个简单的http库来说,Boost.Asio非常棒,但水平相当低(尽管http client examples是一个好的开始)。 C++ Networking Library*(cpp-netlib)看起来像是在轨道上,在asio之上构建一个更高级别的api,但还不是很成熟。查看http_client example。
我要么围绕asio编写自己的包装器,要么扩展(并贡献)cpp-netlib,除非我能找到更好的选择。
(BTW libcurl 不是对我来说是一个更好的选择。这是一个比我想要的更大的api,对于像http客户端这样的东西非常笨重,特别是在C ++中。不要误会我的意思,它是一个很棒的库,但不适合简单的http客户端。)
答案 7 :(得分:0)
C ++本身并没有真正的API。要执行GET请求,您的程序需要打开与相关站点的TCP套接字连接,并将信息发送到套接字以符合HTTP规范,请参阅here。您可以找到许多库来帮助解决这个问题,例如,您可以查看开源程序wget使用的内容。如果您自己编写代码,使用数据包嗅探工具会很有帮助。您可以准确地看到您的浏览器发送到Web服务器以获取文件的内容,并且只发送该消息。这不是太难,但很难。 TCP最初是一个非常大的学习曲线。
顺便说一句,你是什么意思“来自谷歌?”