Rok*_*Rok 5 qt webkit qtwebkit
目前我将我的HTML,JS,CSS,图形等本地存储在硬盘上并使用它们进行访问QWebFrame::SetUrl( QUrl::fromLocalFile( "appFolder\html\index.html" )).在某些时候,我将需要加密本地存储的文件,所以我正在寻找一种方法来解密它们,或者将它们全部解密到内存中并以这种方式访问它们.
我知道我可以用来QWebFrame::setContent( htmlData )从内存中加载HTML,这样我就可以加载加密的HTML文件,在内存中解密,然后以这种方式显示,但我怎么去其他数据(JS,CSS,图形等)哪个目前存储在子文件夹中?
或者,有没有办法可以拦截访问所有HTML,JS,CSS等文件的请求,并在加载时解密它们?
通过使用我自己的NetworkAccessManager我可以拦截调用,createRequest所以我可以看到每个文件被加载时,但我不知道如何使用它来动态解密数据.我还可以将插槽功能连接到finished(QNetworkReply*)信号,但此时数据已经被读取 - QIODevice当前位置指向文件的末尾.
我会非常感谢任何有关正确方向的建议或指示.
我认为在您的情况下,最好的解决方案是继承QNetworkReply类并在重新实现的QNetworkAccessManager::createRequest()函数中使用这个新类。
一般来说,您应该重新实现QNetworkReply的下一个虚拟函数:
bytesAvailable(), readData(char *data, qint64 maxSize), close(), abort()。
例如,readData应该是以下内容:
qint64 NetworkReplyEx::readData(char *data, qint64 maxSize)
{
return m_buffer.read(data, maxSize);
}
Run Code Online (Sandbox Code Playgroud)
其中m_buffer已经解密的数据。
此外,您还需要在此类中添加所有必要的逻辑来获取加密数据,解密该数据...最后您应该finished()在新类中手动发出信号,这样QWebView或其他相关类将获得解密的html。
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |