从qwebkit读取下载的数据

12 篇文章 0 订阅

主要有如下几个要点

1.从qwebview中获取qnetworkaccessmanager,然后重写createRequest

QNetworkReply *myNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData){
    QNetworkReply *reply = QNetworkAccessManager::createRequest(op, req, outgoingData);
    //连接到reply的readyRead信号
    return reply;
}

2.在reply接收的槽函数中,读取每次读的数据,特别需要注意的是读数据的时候千万不要使用readAll(),因为调用了readAll之后,Qt会自动清除资源,(导致无法继续了),所以一定要调用QIODevice的peek接口,来查看数据。

参考文章:http://stackoverflow.com/questions/11132747/qt-reading-data-from-qwebviews-qnetworkaccessmanager/11476348#11476348



I tinkered around with Qt (which I'm new to) and found a way to catch all resources downloaded by WebKit. Here's how:

1) Create your own subclass of QNetworkAccessManager

2) In your derived class, override virtual function createRequest

3) Call base class implementation to get the response object. After that you can look at the URL (or other parameters) and determine whether you need to capture that particular resource or not

4) if you do - connect readyRead signal to some slot that will capture the data

5) in that slot call peek function to read data so that WebKit will get the data also

6) After creating QWebPage object, call setNetworkAccessManager and pass a newly created instance of your subclass from step 1)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值