【发布时间】:2012-08-13 09:20:22
【问题描述】:
这是我在这里的第一篇文章,我对 Qt 还很陌生。
我正在使用 Qwebkit 来加载网页,并且我对不完全从网络加载一些资源感兴趣。具体来说,我试图只获取 jpg 文件的大小,而不是 jpg 的二进制数据(不是 HTML 标记)中的图像数据。为此,我重新实现了 QNAM 的 createRequest 方法,如下所示:
QNetworkReply *NetworkAccessManager::createRequest(Operation op,const QNetworkRequest & req,QIODevice * outgoingData )
{
if (req.url().path().endsWith("jpg"))
{
CustomReply *reply = new CustomReply(QNetworkAccessManager::createRequest(op, req, outgoingData));
return reply->getQNR();
}else{
return QNetworkAccessManager::createRequest(op, req, outgoingData);
}
}
然后我在我的 CustomReply 类中连接一些信号以将传入的数据附加到 QByteArray,然后我处理 QByteArray 以查看是否有我正在寻找的 marker。现在在这里我不知道如何进行。在此之后我想做的是关闭连接(不下载更多内容)并使用我通过 CustomReply::getQNR() 收到的数据传递回复。我需要实现一个函数来设置我的回复内容到我存储的 QByteArray,我已经阅读了 this 和 that 但无法解决我的问题。
提前谢谢你。
【问题讨论】:
-
您能否更具体地说明为什么这些链接对您没有帮助?它看起来像原始 QNetworkReply 的代理(如您的第二个链接的答案中所示)是您想要的。您不能将新数据放入现有回复对象中,您需要创建自己的实现并从 createRequest() 返回。要关闭连接,请调用 QNetworkReply::abort()。