2013-07-16 23 views
7

GET isteğinin sonuçlarını görmek istiyorum. Anladığım kadarıyla, bu kod bunu yapmalı. Neyi yanlış yapıyorum?Qt QNetworkReply her zaman boş

void getDoc::on_pushButton_2_clicked() 
{ 
    manager = new QNetworkAccessManager(this); 
    connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); 
    manager->get(QNetworkRequest(QUrl("http://www.google.com"))); 
} 

void getDoc::replyFinished(QNetworkReply *reply) 
{ 
    qDebug() << reply->error(); //prints 0. So it worked. Yay! 
    QByteArray data=reply->readAll(); 
    qDebug() << data; // This is blank/empty 
    QString str(data); 
    qDebug() << "Contents of the reply: "; 
    qDebug() << str; //this is blank or does not print. 
} 

Kod, derler ve çalışır. Sadece işe yaramıyor.

cevap

4

bu gibi görünecek şekilde replyFinished yuvası değiştirerek deneyin: Bir 302 alıyorsanız

qDebug() << QVariant(statusCode).toString(); 

:

QByteArray bytes = reply->readAll(); 
QString str = QString::fromUtf8(bytes.data(), bytes.size()); 
int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); 

Daha sonra 200 yanıt alma olup olmadığını görmek için statusCode yazdırabilirsiniz yanıt, bir durum yönlendirmesi alıyorsunuz. Böyle ele gerekecektir: 302 durum kodu karşılaşmak ne zaman iade ediyorum

if(statusCode == 302) 
{ 
    QUrl newUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); 
    qDebug() << "redirected from " + replyUrl + " to " + newUrl.toString(); 
    QNetworkRequest newRequest(newUrl); 
    manager->get(newRequest); 
    return; 
} 

Ben çalıştırılacak yöntemin kalanını istemiyoruz çünkü.

Umarım bu yardımcı olur!

+0

Teşekkürler. QDebug() 200 bir kod verir, bu yüzden çalışır. Şimdi sayfanın içeriğine nasıl erişebilirim? Ve QString xml (str) ne yapar? – Dirk

+1

Çalıştığını duymak harika! Yukarıdaki kodu başka bir projeden kopyaladım ve 'QString xml (str)' satırını kaldırmayı unuttum. Bunu dikkatimi çekmek için teşekkürler. "QString str", sayfa içeriğine erişim vermelidir. Olmazsa haber ver. –

+1

Qt 5.6 ismailsunni