跨平台抓取Web源码C ++

时间:2015-03-10 22:57:08

标签: c++ http

我正在寻找网页的来源并将其添加到字符串中,我看到的所有指南虽然使用curl或winsockets,但我需要这是交叉兼容的并且只使用C ++(没有外部库)< / p>

有人能指出我正确的方向吗?

感谢。

2 个答案:

答案 0 :(得分:2)

您可能需要查看boost::asio。它提供跨平台网络,涵盖TCP / IP。 boost不是标准库,而是事实上的第二标准C ++库。顺便说一下,很多boost内容最终都在std

接下来是HTTP客户端。遗憾的是,标准C ++库没有HTTP客户端,但协议的基本部分实现非常简单,您可以尝试自己动手 - 您可能只需要GET请求。尝试通过telnet发送GET请求,手动输入 - 你会发现它非常简单。

如果需要SSL / TLS或完整的HTTP支持,您可能会被迫使用第三方库,因为实施它们不仅具有挑战性。

答案 1 :(得分:0)

仅适用于没有外部库的C ++?没有这样的事情。

Qt是相当跨平台的,支持Windows,Linux,MacOS,Android,iOS和其他一些更具异国情调的平台,以及嵌入式平台。

Qt 4有一个专用的QHttp类,但它在Qt 5中被弃用并删除了。对于Qt 5,你将不得不使用QNetworkAccessManager类:

可以通过以下方式从网络上简单下载:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
        this, SLOT(replyFinished(QNetworkReply*)));

manager->get(QNetworkRequest(QUrl("http://qt-project.org")));

是的,Qt 5是一个很大的框架,对于单一任务的目的来说几乎没有道理,但另一方面,它是非常强大,非常便携的应用程序开发框架,所以它很可能在其他方面派上用场同样。