Send a request to an IP address
-
**The objective of this program is to open a relay on an object connected to the network. I made all simple, I created a button that will send a request to the IP address 192.168.1.220 with "http://192.168.1.200/hidden.htm?M0:O1=ON" to open this relay.
I have not yet seen if it works because I have a lot of errors, do you know why? And also do you think the program is right?**
**My .h:** #ifndef REQUESTMANAGER_H #define REQUESTMANAGER_H #include <QMainWindow> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> #include <QtNetwork/QAuthenticator> #include <QPushButton> namespace Ui { class RequestManager; } class RequestManager : public QMainWindow { Q_OBJECT public: explicit RequestManager(QWidget *parent = 0); ~RequestManager(); private slots: void on_sendButton_clicked(); void handleResponse(QNetworkReply *reply); void sendRequest(); private: Ui::RequestManager *ui; QNetworkAccessManager m_manager; QPushButton *m_button; }; #endif // REQUESTMANAGER_H **My .cpp :** #include "requestmanager.h" #include "ui_requestmanager.h" #include <QTextStream> #include <QByteArray> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> #include <QUrl> #include <QPushButton> RequestManager::RequestManager(QWidget *parent) : QMainWindow(parent), ui(new Ui::RequestManager) { ui->setupUi(this); m_button = new QPushButton("Close Relay", this); //Appuie sur bouton pour envoyer la requête connect(m_button, &QPushButton::clicked, this, &RequestManager::on_sendButton_clicked); } RequestManager::~RequestManager() { delete ui; } void RequestManager::sendRequest() { QNetworkRequest request(QUrl("http://192.168.1.200/hidden.htm?M0:O1=ON")); QNetworkReply *reply = m_manager.get(request); connect(reply, &QNetworkReply::finished, this, &RequestManager::handleResponse); } void RequestManager::handleResponse(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError) { // Handle error } else { // Process response data } reply->deleteLater(); } void RequestManager::on_sendButton_clicked() { sendRequest(); }
My interface:
My errors:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtGui\qwindowdefs.h:37: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtGui/qwindowdefs.h:37:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:-1: In instantiation of 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]':
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:33: required from here
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qglobal.h:729: erreur : static assertion failed: The slot requires more arguments than the signal provides.
#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:224: in expansion of macro 'Q_STATIC_ASSERT_X'
Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount),
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qglobal.h:729: erreur : static assertion failed: Signal and slot arguments are not compatible.
#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:226: in expansion of macro 'Q_STATIC_ASSERT_X'
Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs.h:43: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtCore/qobjectdefs.h:43:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtGui\qwindowdefs.h:38: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtGui/qwindowdefs.h:38,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs_impl.h:-1: In instantiation of 'struct QtPrivate::List_Left<QtPrivate::List<>, 1>':
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:239: required from 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]'
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:33: required from here
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs_impl.h:73: erreur : no type named 'Car' in 'struct QtPrivate::List<>'
typedef typename List_Append<List<typename L::Car>,typename List_Left<typename L::Cdr, N - 1>::Value>::Value Value;
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:38: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:38:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:-1: In static member function 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]':
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:240: avertissement : control reaches end of non-void function [-Wreturn-type]
}
^Thanks for your help!
-
**The objective of this program is to open a relay on an object connected to the network. I made all simple, I created a button that will send a request to the IP address 192.168.1.220 with "http://192.168.1.200/hidden.htm?M0:O1=ON" to open this relay.
I have not yet seen if it works because I have a lot of errors, do you know why? And also do you think the program is right?**
**My .h:** #ifndef REQUESTMANAGER_H #define REQUESTMANAGER_H #include <QMainWindow> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> #include <QtNetwork/QAuthenticator> #include <QPushButton> namespace Ui { class RequestManager; } class RequestManager : public QMainWindow { Q_OBJECT public: explicit RequestManager(QWidget *parent = 0); ~RequestManager(); private slots: void on_sendButton_clicked(); void handleResponse(QNetworkReply *reply); void sendRequest(); private: Ui::RequestManager *ui; QNetworkAccessManager m_manager; QPushButton *m_button; }; #endif // REQUESTMANAGER_H **My .cpp :** #include "requestmanager.h" #include "ui_requestmanager.h" #include <QTextStream> #include <QByteArray> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> #include <QUrl> #include <QPushButton> RequestManager::RequestManager(QWidget *parent) : QMainWindow(parent), ui(new Ui::RequestManager) { ui->setupUi(this); m_button = new QPushButton("Close Relay", this); //Appuie sur bouton pour envoyer la requête connect(m_button, &QPushButton::clicked, this, &RequestManager::on_sendButton_clicked); } RequestManager::~RequestManager() { delete ui; } void RequestManager::sendRequest() { QNetworkRequest request(QUrl("http://192.168.1.200/hidden.htm?M0:O1=ON")); QNetworkReply *reply = m_manager.get(request); connect(reply, &QNetworkReply::finished, this, &RequestManager::handleResponse); } void RequestManager::handleResponse(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError) { // Handle error } else { // Process response data } reply->deleteLater(); } void RequestManager::on_sendButton_clicked() { sendRequest(); }
My interface:
My errors:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtGui\qwindowdefs.h:37: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtGui/qwindowdefs.h:37:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:-1: In instantiation of 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]':
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:33: required from here
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qglobal.h:729: erreur : static assertion failed: The slot requires more arguments than the signal provides.
#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:224: in expansion of macro 'Q_STATIC_ASSERT_X'
Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount),
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qglobal.h:729: erreur : static assertion failed: Signal and slot arguments are not compatible.
#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:226: in expansion of macro 'Q_STATIC_ASSERT_X'
Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs.h:43: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtCore/qobjectdefs.h:43:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtGui\qwindowdefs.h:38: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtGui/qwindowdefs.h:38,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs_impl.h:-1: In instantiation of 'struct QtPrivate::List_Left<QtPrivate::List<>, 1>':
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:239: required from 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]'
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:33: required from here
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs_impl.h:73: erreur : no type named 'Car' in 'struct QtPrivate::List<>'
typedef typename List_Append<List<typename L::Car>,typename List_Left<typename L::Cdr, N - 1>::Value>::Value Value;
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:38: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:38:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:-1: In static member function 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]':
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:240: avertissement : control reaches end of non-void function [-Wreturn-type]
}
^Thanks for your help!
-
@Raphawel Please post source code as text!
If you have many errors then please post the first one (again: please post it as text).@jsulm said in Send a request to an IP address:
@Raphawel Please post source code as text!
If you have many errors then please post the first one (again: please post it as text).It's done, excuse me. But for the mistakes I prefer to leave the picture instead of writing them, even if I write some. PS: I will change if it does not suit you
-
@jsulm said in Send a request to an IP address:
@Raphawel Please post source code as text!
If you have many errors then please post the first one (again: please post it as text).It's done, excuse me. But for the mistakes I prefer to leave the picture instead of writing them, even if I write some. PS: I will change if it does not suit you
@Raphawel said in Send a request to an IP address:
I prefer to leave the picture instead of writing them
No need to write: you can simply copy/paste...
-
@Raphawel said in Send a request to an IP address:
I prefer to leave the picture instead of writing them
No need to write: you can simply copy/paste...
-
@Raphawel
I cannot spot what the issue is. But do you really have to use such an old version of Qt as 5.6.3, in case that is relevant? It won't do you any favors in the long run....@JonB said in Send a request to an IP address:
@Raphawel
I cannot spot what the issue is. But do you really have to use such an old version of Qt as 5.6.3, in case that is relevant? It won't do you any favors in the long run....Thank you for your answer. Yes, I have to use version 5.6.3 to be able to use the application under 32 bit.
-
**The objective of this program is to open a relay on an object connected to the network. I made all simple, I created a button that will send a request to the IP address 192.168.1.220 with "http://192.168.1.200/hidden.htm?M0:O1=ON" to open this relay.
I have not yet seen if it works because I have a lot of errors, do you know why? And also do you think the program is right?**
**My .h:** #ifndef REQUESTMANAGER_H #define REQUESTMANAGER_H #include <QMainWindow> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> #include <QtNetwork/QAuthenticator> #include <QPushButton> namespace Ui { class RequestManager; } class RequestManager : public QMainWindow { Q_OBJECT public: explicit RequestManager(QWidget *parent = 0); ~RequestManager(); private slots: void on_sendButton_clicked(); void handleResponse(QNetworkReply *reply); void sendRequest(); private: Ui::RequestManager *ui; QNetworkAccessManager m_manager; QPushButton *m_button; }; #endif // REQUESTMANAGER_H **My .cpp :** #include "requestmanager.h" #include "ui_requestmanager.h" #include <QTextStream> #include <QByteArray> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> #include <QUrl> #include <QPushButton> RequestManager::RequestManager(QWidget *parent) : QMainWindow(parent), ui(new Ui::RequestManager) { ui->setupUi(this); m_button = new QPushButton("Close Relay", this); //Appuie sur bouton pour envoyer la requête connect(m_button, &QPushButton::clicked, this, &RequestManager::on_sendButton_clicked); } RequestManager::~RequestManager() { delete ui; } void RequestManager::sendRequest() { QNetworkRequest request(QUrl("http://192.168.1.200/hidden.htm?M0:O1=ON")); QNetworkReply *reply = m_manager.get(request); connect(reply, &QNetworkReply::finished, this, &RequestManager::handleResponse); } void RequestManager::handleResponse(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError) { // Handle error } else { // Process response data } reply->deleteLater(); } void RequestManager::on_sendButton_clicked() { sendRequest(); }
My interface:
My errors:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtGui\qwindowdefs.h:37: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtGui/qwindowdefs.h:37:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:-1: In instantiation of 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]':
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:33: required from here
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qglobal.h:729: erreur : static assertion failed: The slot requires more arguments than the signal provides.
#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:224: in expansion of macro 'Q_STATIC_ASSERT_X'
Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount),
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qglobal.h:729: erreur : static assertion failed: Signal and slot arguments are not compatible.
#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:226: in expansion of macro 'Q_STATIC_ASSERT_X'
Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs.h:43: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtCore/qobjectdefs.h:43:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtGui\qwindowdefs.h:38: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtGui/qwindowdefs.h:38,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs_impl.h:-1: In instantiation of 'struct QtPrivate::List_Left<QtPrivate::List<>, 1>':
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:239: required from 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]'
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:33: required from here
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs_impl.h:73: erreur : no type named 'Car' in 'struct QtPrivate::List<>'
typedef typename List_Append<List<typename L::Car>,typename List_Left<typename L::Cdr, N - 1>::Value>::Value Value;
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:38: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:38:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:-1: In static member function 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]':
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:240: avertissement : control reaches end of non-void function [-Wreturn-type]
}
^Thanks for your help!
@Raphawel said in Send a request to an IP address:
#include <QtNetwork/QNetworkAccessManager>
this is an usually include pattern. Did you correctly add the network module to your project ?
cmake:
find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake:
QT += network
-
@Raphawel said in Send a request to an IP address:
#include <QtNetwork/QNetworkAccessManager>
this is an usually include pattern. Did you correctly add the network module to your project ?
cmake:
find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake:
QT += network
@J-Hilk Thanks for your answer
#------------------------------------------------- # # Project created by QtCreator 2023-02-08T14:04:54 # #------------------------------------------------- QT += core gui QT += network greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = Envoi_requete TEMPLATE = app SOURCES += main.cpp\ requestmanager.cpp HEADERS += requestmanager.h FORMS += requestmanager.ui
Yes I have
-
@J-Hilk Thanks for your answer
#------------------------------------------------- # # Project created by QtCreator 2023-02-08T14:04:54 # #------------------------------------------------- QT += core gui QT += network greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = Envoi_requete TEMPLATE = app SOURCES += main.cpp\ requestmanager.cpp HEADERS += requestmanager.h FORMS += requestmanager.ui
Yes I have
-
**The objective of this program is to open a relay on an object connected to the network. I made all simple, I created a button that will send a request to the IP address 192.168.1.220 with "http://192.168.1.200/hidden.htm?M0:O1=ON" to open this relay.
I have not yet seen if it works because I have a lot of errors, do you know why? And also do you think the program is right?**
**My .h:** #ifndef REQUESTMANAGER_H #define REQUESTMANAGER_H #include <QMainWindow> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> #include <QtNetwork/QAuthenticator> #include <QPushButton> namespace Ui { class RequestManager; } class RequestManager : public QMainWindow { Q_OBJECT public: explicit RequestManager(QWidget *parent = 0); ~RequestManager(); private slots: void on_sendButton_clicked(); void handleResponse(QNetworkReply *reply); void sendRequest(); private: Ui::RequestManager *ui; QNetworkAccessManager m_manager; QPushButton *m_button; }; #endif // REQUESTMANAGER_H **My .cpp :** #include "requestmanager.h" #include "ui_requestmanager.h" #include <QTextStream> #include <QByteArray> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> #include <QUrl> #include <QPushButton> RequestManager::RequestManager(QWidget *parent) : QMainWindow(parent), ui(new Ui::RequestManager) { ui->setupUi(this); m_button = new QPushButton("Close Relay", this); //Appuie sur bouton pour envoyer la requête connect(m_button, &QPushButton::clicked, this, &RequestManager::on_sendButton_clicked); } RequestManager::~RequestManager() { delete ui; } void RequestManager::sendRequest() { QNetworkRequest request(QUrl("http://192.168.1.200/hidden.htm?M0:O1=ON")); QNetworkReply *reply = m_manager.get(request); connect(reply, &QNetworkReply::finished, this, &RequestManager::handleResponse); } void RequestManager::handleResponse(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError) { // Handle error } else { // Process response data } reply->deleteLater(); } void RequestManager::on_sendButton_clicked() { sendRequest(); }
My interface:
My errors:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtGui\qwindowdefs.h:37: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtGui/qwindowdefs.h:37:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:-1: In instantiation of 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]':
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:33: required from here
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qglobal.h:729: erreur : static assertion failed: The slot requires more arguments than the signal provides.
#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:224: in expansion of macro 'Q_STATIC_ASSERT_X'
Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount),
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qglobal.h:729: erreur : static assertion failed: Signal and slot arguments are not compatible.
#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:226: in expansion of macro 'Q_STATIC_ASSERT_X'
Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs.h:43: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtCore/qobjectdefs.h:43:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtGui\qwindowdefs.h:38: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtGui/qwindowdefs.h:38,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs_impl.h:-1: In instantiation of 'struct QtPrivate::List_Left<QtPrivate::List<>, 1>':
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:239: required from 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]'
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:33: required from here
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobjectdefs_impl.h:73: erreur : no type named 'Car' in 'struct QtPrivate::List<>'
typedef typename List_Append<List<typename L::Car>,typename List_Left<typename L::Cdr, N - 1>::Value>::Value Value;
^C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qwidget.h:38: In file included from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include/QtWidgets/qwidget.h:38:0,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\qmainwindow.h:37: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/qmainwindow.h:37,
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets\QMainWindow:1: from C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtWidgets/QMainWindow:1,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.h:4: from ..\Envoi_requete\requestmanager.h:4,
C:\Users\46053500\Documents\Envoi_requete\Envoi_requete\requestmanager.cpp:1: from ..\Envoi_requete\requestmanager.cpp:1:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:-1: In static member function 'static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QNetworkReply::)(); Func2 = void (RequestManager::)(QNetworkReply*); typename QtPrivate::FunctionPointer<Func>::Object = QNetworkReply; typename QtPrivate::FunctionPointer<Func2>::Object = RequestManager]':
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qobject.h:240: avertissement : control reaches end of non-void function [-Wreturn-type]
}
^Thanks for your help!
@Raphawel said in Send a request to an IP address:
C:\QT_5.6.3_MinGW\5.6.3\mingw49_32\include\QtCore\qglobal.h:729: erreur : static assertion failed: The slot requires more arguments than the signal provides.
#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)connect(reply, &QNetworkReply::finished, this, &RequestManager::handleResponse);
void RequestManager::handleResponse(QNetworkReply *reply)
void QNetworkReply::finished()
signal passes no parameters. YourhandleResponse(QNetworkReply *reply)
slot requires one. Hence the error message (see the bit I have bolded). -
@Raphawel
Just to check: have you deleted all the files in the build output directory, and re-runqmake
and compilation? You need to make sure everything is "clean" before you continue. -
@JonB That is to say, delete all the files from here :
or here :
And to be sure re-launch qmake it is this (at the bottom left):
-
@Raphawel
No, not source files! If you don't know what your build output folder is you'd better not touch anything! :)In any case you may not need this. See my later post when I spotted your bad
connect()
signal/slot call, that may be all you need to fix.@JonB Ok thanks for your help but I managed to get my relay opened. In the code I modified this part by changing :
My .h:#ifndef REQUESTMANAGER_H #define REQUESTMANAGER_H #include <QMainWindow> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> #include <QtNetwork/QAuthenticator> #include <QPushButton> namespace Ui { class RequestManager; } class RequestManager : public QMainWindow { Q_OBJECT public: explicit RequestManager(QWidget *parent = 0); ~RequestManager(); private slots: void on_sendButton_clicked(); void handleResponse(); // changing handleResponse(QNetworkReply *reply); void sendRequest(); private: Ui::RequestManager *ui; QNetworkAccessManager m_manager; QPushButton *m_button; QNetworkReply *m_reply; //add }; #endif // REQUESTMANAGER_H
My .cpp :
#include "requestmanager.h" #include "ui_requestmanager.h" #include <QCoreApplication> #include <QObject> #include <QTextStream> #include <QByteArray> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> #include <QUrl> #include <QPushButton> RequestManager::RequestManager(QWidget *parent) : QMainWindow(parent), ui(new Ui::RequestManager) { ui->setupUi(this); m_button = new QPushButton("Close Relay", this); //Appuie sur bouton pour envoyer la requête connect(m_button, &QPushButton::clicked, this, &RequestManager::on_sendButton_clicked); } RequestManager::~RequestManager() { delete ui; } void RequestManager::sendRequest() { QNetworkRequest request(QUrl("http://192.168.1.220/hidden.htm?M0:O1=ON")); m_reply = m_manager.get(request); connect(m_reply, &QNetworkReply::finished, this, &RequestManager::handleResponse); } void RequestManager::handleResponse() { QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender()); //add if (reply->error() != QNetworkReply::NoError) { // Handle error } else { // Process response data } reply->deleteLater(); m_reply = nullptr; //add } void RequestManager::on_sendButton_clicked() { sendRequest(); }
And thanks to these changes no more errors, there was an error in the slots :)
-