Qt Http连接使用到的类有:QNetworkAccessManager、QNetworkRequest和 QNetworkReply;
连接超时判断使用到的类有:QTimer。
程序截图如下:
代码如下:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui/QMainWindow>
#include "ui_mainwindow.h"
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QTimer>
class mainWindow : public QMainWindow
{
Q_OBJECT
public:
mainWindow(QWidget *parent = 0, Qt::WFlags flags = 0);
~mainWindow();
public slots:
void on_pushButton_clicked();
void slot_finished(QNetworkReply *);
void slot_timeout();
private:
Ui::mainWindowClass ui;
QNetworkAccessManager* m_pNetworkManager; //网络管理类
QNetworkReply* m_pNetworkReply; //请求返回信息
QTimer* m_pTimer; //请求超时计时器
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include <QMessageBox>
mainWindow::mainWindow(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
m_pNetworkManager = new QNetworkAccessManager(this);
connect(m_pNetworkManager,SIGNAL(finished(QNetworkReply*)),
this,SLOT(slot_finished(QNetworkReply*)));
//超时
m_pTimer = new QTimer;
connect(m_pTimer,SIGNAL(timeout()),this,SLOT(slot_timeout()));
}
mainWindow::~mainWindow()
{
if (m_pNetworkManager)
{
delete m_pNetworkManager;
m_pNetworkManager = NULL;
}
}
void mainWindow::on_pushButton_clicked() //发起连接
{
m_pNetworkReply = m_pNetworkManager->get(QNetworkRequest(QUrl("http://128.0.0.1"))); //发送请求
m_pTimer->start(1000);
}
void mainWindow::slot_finished(QNetworkReply *reply)
{
m_pTimer->stop();
reply->deleteLater();
QMessageBox::information(NULL,"提示","连接网络成功!");
}
void mainWindow::slot_timeout()
{
m_pTimer->stop();
m_pNetworkReply->deleteLater();
QMessageBox::information(NULL,"提示","连接网络失败!");
}
源代码下载地址: