天天看點

基于VS2010_Qt4.8.6(32位)的發起Http連接配接請求示範程式

Qt Http連接配接使用到的類有:QNetworkAccessManager、QNetworkRequest和 QNetworkReply;

連接配接逾時判斷使用到的類有:QTimer。

程式截圖如下:

基于VS2010_Qt4.8.6(32位)的發起Http連接配接請求示範程式

代碼如下:

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,"提示","連接配接網絡失敗!"); 
}             

源代碼下載下傳位址:

http://download.csdn.net/download/sgwxy/10270019