Visual studio 2010 在Qt中发出HTTP请求
我是新来的Qt。我为VS2008安装了Qt,并与我的VS2010集成。我只是想知道如何发出HTTP请求。我读过有关QtNetwork的文章,但QtHttp是不可接受的 我还了解libcurl和curlpp,但是我在安装它以及使它与Qt一起工作时遇到了问题 您推荐什么,QtNetwork或curlpp?如果QtNetwork,请给我一个示例函数或一段代码(以及要使用的类)。如果curlpp(libcurl),您能告诉我在哪里可以找到安装Qt的步骤吗(或者请解释一下) 非常感谢。libcurl和curlpp是很好的库,但是使用它们会增加项目的依赖性,这可能是您可以避免的 Qt的最新版本建议用于发出网络请求(包括http请求)和接收回复 下载文件的最简单方法是:Visual studio 2010 在Qt中发出HTTP请求,visual-studio-2010,qt,libcurl,curlpp,qtnetwork,Visual Studio 2010,Qt,Libcurl,Curlpp,Qtnetwork,我是新来的Qt。我为VS2008安装了Qt,并与我的VS2010集成。我只是想知道如何发出HTTP请求。我读过有关QtNetwork的文章,但QtHttp是不可接受的 我还了解libcurl和curlpp,但是我在安装它以及使它与Qt一起工作时遇到了问题 您推荐什么,QtNetwork或curlpp?如果QtNetwork,请给我一个示例函数或一段代码(以及要使用的类)。如果curlpp(libcurl),您能告诉我在哪里可以找到安装Qt的步骤吗(或者请解释一下) 非常感谢。libcurl和cu
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://stackoverflow.com")));
调用replyFinished
槽时,它作为参数的对象将包含下载的数据以及元数据(头等)
您可以在Qt示例中找到更完整的示例。Giuseppe是对的,您不需要使用libcurl、curlpp和类似的库。 没有必要这样做,Qt本身有一个简单的工作类 请记住,发送请求和检索回复的标准方式是异步的。 您必须始终将manager finished(QNetworkReply*)信号连接到插槽 如果发送多个请求,并且不想为每个回复添加插槽,则始终可以运行事件循环,并将管理器信号连接到事件循环quit()插槽 大概是这样的:
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切换到Qtide。它有一个很好的模拟器和一个完整的移动设备测试工具链