如何获取URL的状态?

问题描述

我正在使用Qt,应该给我一个包含我的URL的QString,在打开页面之前,我想知道它是否可以访问。

我阅读了QNetworkReply的文档,发现针对不同类型的错误有不同的代码(例如:在服务器上找不到远程内容->代码203)。

问题是:从我的QString开始,如何获得这些代码值?

解决方法

在打开页面之前如何知道是否可以访问?

这不是您可能事先知道的,而是反复的尝试:

  1. 提出请求
  2. 检查错误
  3. 获取错误代码

我该怎么做?

让我们以documentation为例:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkRequest request;

request.setUrl(QUrl("http://put.your-url.here"));

QNetworkReply *reply = manager->get(request);

connect(reply,&QIODevice::readyRead,this,&MyClass::slotReadyRead);
connect(reply,&QNetworkReply::errorOccurred,&MyClass::slotError);
connect(reply,&QNetworkReply::sslErrors,&MyClass::slotSslErrors);

现在在执行MyClass::slotError时,写:

qDebug() << static_cast<QNetworkReply *>(sender())->error();

这应该打印错误代码(如果有的话)。