Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 在Qt中发出HTTP请求_Visual Studio 2010_Qt_Libcurl_Curlpp_Qtnetwork - Fatal编程技术网

Visual studio 2010 在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

我是新来的Qt。我为VS2008安装了Qt,并与我的VS2010集成。我只是想知道如何发出HTTP请求。我读过有关QtNetwork的文章,但QtHttp是不可接受的

我还了解libcurlcurlpp,但是我在安装它以及使它与Qt一起工作时遇到了问题

您推荐什么,QtNetworkcurlpp?如果QtNetwork,请给我一个示例函数或一段代码(以及要使用的类)。如果curlpp(libcurl),您能告诉我在哪里可以找到安装Qt的步骤吗(或者请解释一下)

非常感谢。

libcurl和curlpp是很好的库,但是使用它们会增加项目的依赖性,这可能是您可以避免的

Qt的最新版本建议用于发出网络请求(包括http请求)和接收回复

下载文件的最简单方法是:

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。它有一个很好的模拟器和一个完整的移动设备测试工具链