|
1Qter豆
求解决方案?
错误信息:
enum QNetworkReply::NetworkError
官方文档:QNetworkReply::HostNotFoundError 3 the remote host name was not found (invalid hostname)
程序源代码如下:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
manager = new QNetworkAccessManager(this);
connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://www.baidu.com")));
ui->progressBar->hide();
}
void MainWindow::replyFinished(QNetworkReply *reply)
{
QString all = reply->readAll();
ui->textBrowser->setText(all);
reply->deleteLater();
}
百度的一个包含错误判断的代码:
void DownPages::replyFinished(QNetworkReply * reply)
{
//查看是否有错误
switch(reply->error())
{
//如果没有错误把页面输出
case QNetworkReply::NoError:
qDebug()<<"no error";
{
QTextCodec * cod=QTextCodec::codecForName("utf-8");
QString str=cod->toUnicode(reply->readAll());
qDebug()<<str;
}
break;
case QNetworkReply::ContentNotFoundError:
{
QUrl failedUrl;
failedUrl = reply->request().url();
int httpStatus = reply->attribute(
QNetworkRequest::HttpStatusCodeAttribute).toInt();
QString reason = reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString();
qDebug()<<"url"<<failedUrl <<httpStatus<<" "<<reason;
}
break;
default:
{
qDebug()<<"Have error"<<reply->errorString()<<" error "<<reply->error();
}
}
qDebug()<<"finished";
}
|
最佳答案
查看完整内容
除了被屏蔽,也可能是http 301 redirect, QNetworkReply里面可以查看是不是存在redirect的网址
|