帮我看看哪里写错了,下面是代码:QHttpDownLoad.h
#ifndef QHTTPDOWNLOAD_H
#define QHTTPDOWNLOAD_H
#include <QWidget>
#include <QUrl>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QFile>
#include <QObject>
class QHttpDownLoad : public QObject
{
Q_OBJECT
public:
QHttpDownLoad(QObject *parent = 0);
~QHttpDownLoad();
void startRequest(QUrl url);
void down();
private slots:
void httpFinished();
void httpReadyRead();
private:
QNetworkAccessManager *manager;
QNetworkReply *reply;
QUrl url;
QFile *file;
};
#endif // QHTTPDOWNLOAD_H
QHttpDownLoad.cpp
#include "qhttpdownload.h"
#include <QMessageBox>
QHttpDownLoad::QHttpDownLoad(QObject *parent)
: QObject(parent)
{
manager = new QNetworkAccessManager(this);
}
QHttpDownLoad::~QHttpDownLoad()
{
}
void QHttpDownLoad::startRequest( QUrl url )
{
reply = manager->get(QNetworkRequest(url));
connect(reply,SIGNAL(finished()),this,SLOT(httpFinished()));//这个2个槽函数没有被调用
connect(reply,SIGNAL(readyRead()),this,SLOT(httpReadyRead()));
}
void QHttpDownLoad::down()
{
QString fileName = "F:\\test.html";
file = new QFile(fileName);
if(!file->open(QIODevice::WriteOnly))
{
delete file;
file = 0;
return;
}
startRequest(QUrl("http://www.baidu.com/"));
}
void QHttpDownLoad::httpFinished()
{
file->flush();
file->close();
QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (reply->error()) {
file->remove();
} else if (!redirectionTarget.isNull()) {
QUrl newUrl = url.resolved(redirectionTarget.toUrl());
url = newUrl;
reply->deleteLater();
file->open(QIODevice::WriteOnly);
file->resize(0);
startRequest(url);
return;
}
reply->deleteLater();
reply = 0;
delete file;
file = 0;
}
void QHttpDownLoad::httpReadyRead()
{
if (file)
file->write(reply->readAll());
}