如何在QtWebKit中获得响应

use*_*898 7 qtwebkit

与QtWebKit的IM初学者我建立简单的web框架是加载的页面(服务器端),当从这一页我提交的数据我想赶上从在C服务器的响应串++身边,我该怎么办呢?

Gho*_*der 8

我用Qt(我是新手)修补了一下,找到了一种方法来捕获WebKit下载的所有资源.这是如何做:

1)创建自己的QNetworkAccessManager子类

2)在派生类中,覆盖虚函数createRequest

3)调用基类实现以获取响应对象.之后,您可以查看URL(或其他参数)并确定是否需要捕获该特定资源

4)如果你这样做 - 将readyRead信号连接到一个将捕获数据的插槽

5)在该槽中调用peek函数读取数据,以便WebKit也可以获取数据

6)创建QWebPage对象后,调用setNetworkAccessManager并从步骤1)传递新创建的子类实例

就是这样 - 享受!


Li0*_*liQ 1

您可以使用QNetworkReply类来实现它。QWebPage实例具有networkAccessManager()返回QNetworkAccessManager能够发送请求和接收响应的实例的方法。

你需要寻找它的finished信号。

void QNetworkAccessManager::finished ( QNetworkReply * reply )

每当待处理的网络回复完成时,就会发出此信号。回复参数将包含指向刚刚完成的回复的指针。

QNetworkReply反过来,它是 的继承者,QIODevice因此您可以调用它的readAll()方法来接收响应数据。

您可能还会发现这个问题很有用。

  • 我想做完全相同的事情,但这个方法似乎不起作用:当发出完成信号时,WebKit 已经从回复对象中读取了所有数据,所以它不在那里。 (2认同)