好吧,我花了三天时间尝试这个,这就是场景:

我想从Google下载'.csv'文件,然后从文件中处理数据。它适用于Win32控制台应用程序。我有后者,我只是不能为我的生活弄清楚如何下载文件。我听说过libcurl,curlpp,ptypes,自己动手,只是使用.NET api,并且被告知了很多次:

  

......这只是一个GET请求

嗯,这一切都很好,但我必须错过一些东西,因为似乎每个人都知道如何做到这一点。我一直在梳理书籍,想要解决这个问题,甚至在使用“C ++的艺术”之旅后,LNKerrors也遇到了一个巨大的问题。一阵子。

所有这一切,我从中学到了很多,但此时我只想知道如何去做。严重缺乏C ++ API,没有找到示例代码。在线教程几乎不存在。没有书似乎认为这很重要。

有人可以请我救生筏吗?我是一个处于边缘的人。

修改

来自“来自Google”我的意思是我想下载他们托管的.csv文件。一个例子可以是在这里找到。

有帮助吗?

解决方案

您应该能够根据自己的意愿弯曲

现在我已经回答了你的问题。为什么选择C ++?没有什么可以反对语言,但选择最好的语言来完成这项工作。 Perl,PHP和Python(我相信更多)都有很好的文档和支持这种操作。

在perl(我熟悉的那个)中,它只有大约3-5行代码。

其他提示

为什么不只使用已有的东西?

UrlDownloadToFile()

由于您使用的是Win32平台,因此可以使用一个内置的库来以相对直接的方式实现GET请求:WinInet,它是Win32 SDK的一部分。可以在MSDN上找到 WinInet的基本参考

请注意,如果您不熟悉Win32 API,将会有一些粗略的雪橇。有一个非常有用的示例代码块这里

如果您未能将适当的库引用添加到项目中,则会出现链接器错误。听起来你已经在那里学到了一些课程,所以我会保持它的简洁,但请放心,你会在Win32文档中找到你需要的库和头文件引用的引用(你只需要知道在哪里上寻找它的页面。)

您无法使用标准库执行此操作。既然它是win32,你可以按照Paul Keister的建议。

但请查看 libcurl ,因为您使用的是C ++,我建议 POCO 它也非常有用。它们是非常方便的工具!

另一种选择是 WinHTTP ,其中还附带Windows。

>没有找到示例代码

???

数十个样本已发布15年 请参阅api ng news://comp.os.ms-windows.programmer.win32 (C中的样本)

(COM,INET等)

我也一直在为C ++寻找一个好的http lib,但还没找到'完美'的lib。 Boost.Asio 非常棒,但水平相当低一个简单的http库(尽管 http客户端示例是一个好的开始)。 C ++ Networking Library * (cpp-netlib)看起来正在走上正轨,建设更高-iovel api在asio之上,但不是很成熟。查看 http_client示例

我要么围绕asio编写自己的包装器,要么扩展(并贡献)cpp-netlib,除非我能找到更好的选择。

(BTW libcurl 不是对我来说是一个更好的选择。这是一个比我想要的更大的api,对于像http客户端这样的东西非常笨重,特别是在C ++中。不要误会我的意思,它是一个很棒的库,但不适合简单的http客户端。)

C ++本身并没有真正的API。要执行GET请求,您的程序需要打开与相关站点的TCP套接字连接,并将信息发送到套接字以符合HTTP规范,请参阅这里。您可以找到许多库来帮助解决这个问题,例如,您可以查看开源程序wget使用的内容。如果您自己编写代码,使用数据包嗅探工具会很有帮助。您可以准确地看到您的浏览器发送到Web服务器以获取文件的内容,并且只发送该消息。这不是太难,但很难。 TCP最初是一个非常大的学习曲线。

顺便说一句,你是什么意思“来自谷歌?”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top