gpt4 book ai didi

c++ - 执行 qt 网络请求

转载 作者:行者123 更新时间:2023-11-28 06:40:27 26 4
gpt4 key购买 nike

我正在尝试连接到网站并使用 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")));
}

它说:

Error 1 error C2355: 'this' : can only be referenced inside non-static member functions or non-static data member initializers c:\Users\Synturas\documents\visual studio 2013\Projects\qt_request\qt_request\main.cpp 19 1 qt_request

Error 2 error C2355: 'this' : can only be referenced inside non-static member functions or non-static data member initializers c:\Users\Synturas\documents\visual studio 2013\Projects\qt_request\qt_request\main.cpp 21 1 qt_request

Error 3 error C3861: 'connect': identifier not found c:\Users\Synturas\documents\visual studio 2013\Projects\qt_request\qt_request\main.cpp 20 1 qt_request 4 IntelliSense: 'this' may only be used inside a nonstatic member function c:\Users\Synturas\Documents\Visual Studio 2013\Projects\qt_request\qt_request\main.cpp 19 61 qt_request

5 IntelliSense: identifier "connect" is undefined c:\Users\Synturas\Documents\Visual Studio 2013\Projects\qt_request\qt_request\main.cpp 20 2 qt_request

6 IntelliSense: 'this' may only be used inside a nonstatic member function c:\Users\Synturas\Documents\Visual Studio 2013\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代码

关于c++ - 执行 qt 网络请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26077000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com