Rue*_*uel 4 qt libcurl visual-studio-2010 curlpp qtnetwork
我是Qt的新手.我为VS2008安装了Qt并与我的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")));
Run Code Online (Sandbox Code Playgroud)
当replyFinished槽被调用时,QNetworkReply它需要为参数对象将包含所下载的数据以及元数据(标题等).
在Qt示例中可以找到更完整的示例,您可以在此处阅读其源代码.
Giuseppe是对的,你不需要使用libcurl,curlpp和类似的库.没有必要,Qt有一个简单的工作级别.
请记住,发送请求和检索回复的标准方式是异步的.您始终必须将经理完成(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
Run Code Online (Sandbox Code Playgroud)
顺便说一句.不知道你在做什么.但如果它是一个移动应用程序,我会建议你从VS切换到QtCreator IDE.它有一个很好的模拟器和一个完整的工具链,用于移动设备测试.
| 归档时间: |
|
| 查看次数: |
2273 次 |
| 最近记录: |