来自KDE(KIO)下TransferJob的HTTP错误代码

我正在使用以下命令在KDE 5下启动HTTP GET作业 job = KIO::get(url,KIO::NoReload,KIO::HideProgressInfo);

在连接到KIO::TransferJob::result的插槽中

我得到job->error()等于0,但是KIO::TransferJob::isErrorPage()等于true。并且data包含以下内容:

<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
</body>
</html>

据我了解-从属http作业表明该页面是错误页面,但是此错误的代码未转发给父作业,或者我找不到找到它的方法。我想获取代码(403),而不解析接收到的数据。有可能吗?

https://httpstat.us/403可用于测试

abcdefgxxoo 回答:来自KDE(KIO)下TransferJob的HTTP错误代码

简单的答案是可以的。 唯一的选择是TransferJob::isErrorPage(),以了解是否发生任何错误。按照transferjob.cpp

中的这一行代码
     q->connect(slave,&SlaveInterface::errorPage,q,[this]() {
         m_errorPage = true;
     });

但是,如果您查看 ioslaves 中的http.cpp,则会发现已添加键值为 响应码 的元数据到Job::metaData,这样您就可以查询该值了:

auto httpResponseCode = job->metaData().value(QStringLiteral("responsecode"));

httpResponseCode将是QString,因为KIO::MetaData实际上是QMap<QString,QString>类型。

本文链接:https://www.f2er.com/3164876.html

大家都在问