【问题标题】:How to get the status of an URL? [closed]如何获取 URL 的状态? [关闭]
【发布时间】:2021-02-02 00:22:39
【问题描述】:

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

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

问题是:从我的QString开始,如何获取那些code值?

【问题讨论】:

  • offtopic 兄弟,但“找不到资源”应该是 404
  • 在 Qt 文档 doc.qt.io/qt-5/qnetworkreply.html 的枚举 QNetworkReply::NetworkError 部分中,它表示状态 404 的相应代码是 203。
  • 我认为这不是您可以提前知道的,而是反复试验。发出请求,检查错误,获取错误代码。应该是这样的。
  • 我该怎么做?

标签: c++ qt qnetworkaccessmanager qnetworkreply qnetworkrequest


【解决方案1】:

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

这不是你可以提前知道的,而是反复试验:

  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,
        this, &MyClass::slotError);
connect(reply, &QNetworkReply::sslErrors,
        this, &MyClass::slotSslErrors);

现在在MyClass::slotError的实现中,写:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多