#include #include class Widget : public QWidget { Q_OBJECT public: Widget(QWidget*parent=0) : QWidget(parent) { initializeNetworkComponents(); initializeUiComponents(); initializeMessages(); } private: void initializeNetworkComponents(){ m_confmgr = new QNetworkConfigurationManager(this); m_session = new QNetworkSession(m_confmgr->defaultConfiguration(), this); m_netmgr = new QNetworkAccessManager(this); connect(m_session, SIGNAL(stateChanged(QNetworkSession::State)), SLOT(on_session_stateChanged(QNetworkSession::State))); connect(m_session, SIGNAL(opened()), SLOT(on_session_stateChanged(QNetworkSession::State))); connect(m_session, SIGNAL(error(QNetworkSession::SessionError)), SLOT(on_session_error(QNetworkSession::SessionError))); connect(m_netmgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(handleReply(QNetworkReply*))); } void initializeUiComponents(){ QPushButton* buttonOpen = new QPushButton("QNetworkSession::open()"); QPushButton* buttonClose = new QPushButton("QNetworkSession::close()"); // QPushButton* buttonStop = new QPushButton("QNetworkSession::stop()"); QPushButton* buttonGet = new QPushButton("QNetworkAccessManager::get()"); connect(buttonOpen, SIGNAL(clicked()), m_session, SLOT(open())); connect(buttonClose, SIGNAL(clicked()), m_session, SLOT(close())); // connect(buttonStop, SIGNAL(clicked()), m_session, SLOT(stop())); connect(buttonGet, SIGNAL(clicked()), this, SLOT(getPage())); m_log = new QTextBrowser; QVBoxLayout* layout = new QVBoxLayout(this); layout->addWidget(m_log); layout->addWidget(buttonOpen); layout->addWidget(buttonClose); // layout->addWidget(buttonStop); layout->addWidget(buttonGet); } void initializeMessages(){ m_stateList.append("Invalid"); m_stateList.append("NotAvailable"); m_stateList.append("Connecting"); m_stateList.append("Connected"); m_stateList.append("Closing"); m_stateList.append("Disconnected"); m_stateList.append("Roaming"); m_errorList.append("UnknownSessionError"); m_errorList.append("SessionAbortedError"); m_errorList.append("RoamingError"); m_errorList.append("OperationNotSupportedError"); m_errorList.append("InvalidConfigurationError"); } private slots: void on_session_stateChanged(QNetworkSession::State state){ m_log->append(QString("stateChanged: %1(%2)").arg(m_stateList[state]).arg(state)); } void on_session_opened(){ m_log->append("opened"); } void on_session_error(QNetworkSession::SessionError error){ m_log->append(QString("error: %1(%2))").arg(m_errorList[error]).arg(error)); } void handleReply(QNetworkReply* reply) { reply->deleteLater(); m_log->append("reply recieved"); } void getPage() { m_log->append("getting page"); QUrl url("http://www.nokia.com"); QNetworkRequest req(url); m_netmgr->get(req); } private: QNetworkSession* m_session; QNetworkConfigurationManager* m_confmgr; QTextBrowser* m_log; QStringList m_stateList; QStringList m_errorList; QNetworkAccessManager* m_netmgr; }; #include "main.moc" int main(int argc, char* argv[]) { QApplication app(argc, argv); Widget w; #ifdef Q_OS_SYMBIAN w.showMaximized(); #else QNetworkProxyFactory::setUseSystemConfiguration(true); w.show(); #endif return app.exec(); }