C++ 使用QNetworkAccessManager的Qt控制台应用程序

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

我正在尝试编写一个调用web服务的
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();
}