2016-01-04 38 views
0

我有一个QWebView在那里我通过连接观看网络请求:QNetworkReply没有数据

QObject::connect(page()->networkAccessManager(), 
        SIGNAL(finished(QNetworkReply*)), 
        this, 
        SLOT(networkLoaded(QNetworkReply*))); 

则:

void browserControl::networkLoaded(QNetworkReply *reply) 
{ 
    const QUrl reqUrl = reply->request().url(); 
    qDebug() << "url = " << reqUrl; 

    QByteArray array = reply->readAll(); 
    QString data = QString::fromUtf8(array.data(), array.size()); 
    int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).value<int>(); 

qDebug() << "data = " << data; 
    qDebug() << "http code = " << statusCode; 
} 

但是数据始终是空的,如果statusCode200没有关系。 browserControl类继承自QWebView类。

+0

你确定传入的数据实际上是UTF-8?另外,你有没有联系它以确保实际上有数据进入? – MrEricSir

+0

检查回复 - >错误()和errorString() –

+2

它可能是空的,可能是因为页面确实读取了所有内容 –

回答

1

你得到,因为没有QWebPage您的数据插槽之前,先阅读所有的数据被称为

+0

如何防止QWebPage读取某个URL中的数据?覆盖目标URL上的'QWebPage :: acceptNavigationRequest()'? – Jack