正在执行qt网络请求

Doing a qt network request

本文关键字:网络 请求 qt 执行      更新时间:2023-10-16

我试图连接到一个网站并用qt执行请求,到目前为止我得到了这个代码,但它告诉我以下错误:

#include <QCoreApplication>
#include <QDebug>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QUrlQuery>
void sendRequest();
int main(int argc, char *argv[]) { 
    QCoreApplication a(argc, argv);
    sendRequest();
    return a.exec();
}
void sendRequest() {    
QNetworkAccessManager *manager = new QNetworkAccessManager(this);   connect(manager, SIGNAL(finished(QNetworkReply*)),      this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://qt-project.org")));
}

上面写着:

错误1错误C2355:"this":只能在非静态内部引用成员函数或非静态数据成员初始化程序c:\Users\Synturas\documents\visualstudio2013\Projects\qt_request\qt_request\main.cpp 19 1 qt_request

错误2错误C2355:"this":只能在非静态内部引用成员函数或非静态数据成员初始化程序c:\Users\Synturas\documents\visualstudio2013\Projects\qt_request\qt_request\main.cpp 21 1 qt_request

错误3错误C3861:"connect":标识符不是找到c:\Users\Synturas\documents\visual studio2013\Projects\qt_request\qt_request\main.cpp 20 1 qt_request4 IntelliSense:"this"只能在非静态成员内部使用函数c:\Users\Synturas\Documents\Visual Studio2013\Projects\qt_request\qt_request\main.cpp 19 61 qt_request

5 IntelliSense:标识符"connect"为未定义c:\Users\Synturas\Documents\Visual Studio2013\Projects\qt_request\qt_request\main.cpp 20 2 qt_request

6 IntelliSense:"this"只能在非静态成员内部使用函数c:\Users\Synturas\Documents\Visual Studio2013\Projects\qt_request\qt_request\main.cpp 21 3 qt_request

(我在这个项目中使用VS2013,如果这是相关的)

试试这个例子:

解释:您创建了一个新的类,它将为您工作,在main.cpp中创建这个类的实例并调用方法。

*.h

#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 *);//slot, we want catch responce
public:
  void CheckSite(QString url);//our method
};

#endif // NET_H

*.cpp

#include "net.h"
void Net::replyFinished(QNetworkReply *reply) //this slot called when we have responce
{ 
qDebug() << reply->readAll(); //we read result and print it(also you can save it in some variable and use in code
}
void Net::CheckSite(QString url) 
{
  QUrl qrl(url);//QUrl has network adress
  manager = new QNetworkAccessManager(this);//create manager
  connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));//do connection with nededed signal and slot which we alredy wrote
  manager->get(QNetworkRequest(qrl));//send get request
}

#include "net.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Net handler;//create instance
    handler.CheckSite("http://qt-project.org");//set path and wait for responce
    return a.exec();
}

结果:Qt站点的html代码