我是新的 Qt的即可。我安装的Qt为VS2008和我的 VS2010 集成。我只是想知道如何使HTTP请求。我读过有关的 QtNetwork 但是QtHttp是已废弃。

我也知道关于的libcurl curlpp ,但我有安装它,并使其与Qt的工作问题。

你有什么建议,请 QtNetwork curlpp ?如果 QtNetwork ,可以请你给我一个样本函数或一段代码(什么类使用)。如果 curlpp(libcurl中),可以请你点我的地方在哪里可以找到安装它的步骤的Qt (或善意解释)?

非常感谢你。

有帮助吗?

解决方案

的libcurl curlpp 的是伟大的图书馆,但使用起来增加了一个依赖于你的项目,可能就可以避免。

的Qt的最新版本建议使用 QNetworkAccessManager 使网络请求(包括http请求)并接收回复。

要下载文件的最简单的可能的方式是:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://stackoverflow.com")));

当的replyFinished槽被调用时, QNetworkReply 对象,它需要作为参数将包含所下载的数据以及元数据(标题,等)。

一个更完整的示例可以在Qt的例子发现,可以读这里它的源代码

其他提示

朱塞佩是正确的,你不需要使用的的libcurl curlpp 的和类似的库。 有没有必要的,Qt拥有一个简单和工人阶级在它自己的。

请在发送请求和检索答复的标准方法是异步的。 你总是要管理者完成(QNetworkReply *)信号连接到一个插槽中。

如果您发送多个请求,并且不希望添加插槽每次回复,你总是可以运行一个事件循环,并连接经理发信号给事件循环退出()插槽。

像这样:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QEventLoop *eventLoop = new QEventLoop();
QObject::connect(manager, SIGNAL(finished(QNetworkReply*)), eventLoop, SLOT(quit());

manager->get(QNetworkRequest(QUrl("http://stackoverflow.com")));
eventLoop->exec(QEventLoop::ExcludeUserInputEvents);

QByteArray replyData = reply->readAll();
... //do what you want with the data your receive from reply

顺便说一下。不知道你在做什么。但是,如果它是一个移动应用程序,我建议你从VS切换到QtCreator IDE。它有一个很好模拟器和用于移动设备测试的完整工具链。

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