C++ 使用QNetworkAccessManager的Qt控制台应用程序
我正在尝试编写一个调用web服务的C++ 使用QNetworkAccessManager的Qt控制台应用程序,c++,qt,qnetworkaccessmanager,C++,Qt,Qnetworkaccessmanager,我正在尝试编写一个调用web服务的Qt应用程序。这是一个控制台应用程序,url将作为命令行参数传入。我在Qt中搜索了例如http程序,找到了以下链接: 这里有以下代码示例: QNetworkAccessManager *manager = new QNetworkAccessManager(this); connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkRepl
Qt
应用程序。这是一个控制台应用程序,url将作为命令行参数传入。我在Qt
中搜索了例如http
程序,找到了以下链接:
这里有以下代码示例:
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://qt-project.org")));
现在,如果我把它粘贴到我的控制台应用程序中,在main
中,我显然会得到构建错误,因为这个
不存在。我得到:
invalid use of 'this' in non-member function
对于非GUI/控制台类型的应用程序,是否有等效的QNetworkAccessManager
“this”是对象的this指针,因此在main.cpp中它会导致错误,您应该编写一些类来处理网络,然后在main函数中使用此类
应该是这样的。当您运行应用程序时,您将获得Qt站点的html代码
这只是一个例子,将来我们可以在这里添加构造函数、析构函数,可能还有信号(如果我们需要,信号可以帮助我们与其他类进行通信)
*h
“this”是一个对象的this指针,因此在main.cpp中它会导致错误,您应该在其中编写一些类来处理网络,然后在main函数中使用该类
应该是这样的。当您运行应用程序时,您将获得Qt站点的html代码
这只是一个例子,将来我们可以在这里添加构造函数、析构函数,可能还有信号(如果我们需要,信号可以帮助我们与其他类进行通信)
*h
您可以省略
这个
,并使用不带参数的构造函数。确保在需要时删除管理器。@Pavel-确保我可以从第一次调用中删除“this”,但是“this”是连接调用吗?您可以省略this
并使用无参数的构造函数。确保在需要时删除经理。@Pavel-确保我可以从第一次通话中删除“this”,但“this”是连接通话吗?谢谢,伙计,这帮了我很多忙!为我工作。谢谢谢谢你,伙计,这帮了我很大的忙!为我工作。谢谢
#ifndef NET_H
#define NET_H
#include <QObject>
#include <QtCore>
#include <QNetworkAccessManager>
#include <QNetworkReply>
class Net : public QObject
{
Q_OBJECT
QNetworkAccessManager *manager;
private slots:
void replyFinished(QNetworkReply *);
public:
void CheckSite(QString url);
};
#endif // NET_H
#include "net.h"
void Net::replyFinished(QNetworkReply *reply)
{
qDebug() << reply->readAll();
}
void Net::CheckSite(QString url)
{
QUrl qrl(url);
manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(qrl));
}
#include "net.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Net handler;
handler.CheckSite("http://qt-project.org");
return a.exec();
}