2017-07-19 2 views
0

Ich versuche, Webseite Aktivität mit Qt (5.8) mit QNetworkAccessManager zu simulieren. Ich habe das FireBug-Plugin von Firefox verwendet, um jede Get/Post-Anfrage zu analysieren und die entsprechenden Header zu kopieren. Bei meiner anfänglichen GET-Anfrage erhalte ich ein QNetworkReply-Objekt. Ich habe alle Header überprüft, und es ist die richtige Antwort. Wenn ich jedoch versuche, die Daten zu lesen, bekomme ich ein seltsames Format. Beim Betrachten dieses Pakets in Wireshark, die HTML-Antwort auftaucht, wie es in FireBug tut, so etwas wie:Strange Encoding auf HTTP-GET-Antwort in Qt

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <meta http-equiv="Content-language" content="en" />... 

Allerdings, wenn ich meine Antwort auf eine QByteArray lese, sagt der Debugger, dass diese Variable ist:

\037\213\010\000\000\000\000\000\000\003µW[SÛ8\024~Æ¿BÕÌNàÁv\234\033\t$Ù\013\224¶;)0\020¦»O... 

und wenn diese QByteArray in eine Textdatei zu speichern, sieht es wie folgt aus:

‹  µW[SÛ8~Æ¿BÕÌNàÁvœ $Ù”¶;)0¦»OÙ–mQÙr%™Àîìß#_s-Ýay òѹ| 
ç*ɲ¦ïŽÏŽ–ž¿G‰N9:¿úmñéaÛu¿ô\÷xyŒþø¸ü¼@žÓEKI2Å4á®ûþ#î­õlÝÚuBâ¹5- 
•Þ¦<S3œh¸îz½vÖ}GÈØõ&“I% 
Ó'Y<Ã4Ãh³2:( çÖÎ4¥š £Ä¦ß 
v3ÃG"Ó4Óöò.§Õ×kz«]£ô ‘ŠêÙÕòÄc侨ÆØ,HÜVe <-Dos&©jñÚÞs¼¹$qJZ¬™°$ 
´-‘”Î0)t"d‹õ3‘šeè#¹áD?æD~'Yœè– 

Kann mir jemand sagen, was ich falsch mache? Ich habe das Gefühl, dass es sich um ein Codierungsproblem handelt. Mein Code sieht so aus:

void MainWindow::replyFinished(QNetworkReply *reply) 
{ 
    if (reply->error() == QNetworkReply::NoError) 
    { 
     QByteArray getResponse = reply->readAll(); 
     QList<QNetworkReply::RawHeaderPair> headers = reply->rawHeaderPairs(); 
     output(QString(getResponse)); 
     QFile file("C:/Users/lrmlrm97/Desktop/Response.txt"); 
     if (file.open(QFile::WriteOnly)) 
     { 
      for (int i = 0; i < headers.size(); i++) 
      { 
       file.write(headers.at(i).first + ": " + headers.at(i).second); 
       file.write("\r\n"); 
      } 
      file.write("\r\n\r\n"); 
      file.write(getResponse); 
      file.write("\r\n\r\n"); 
      file.close(); 
     } 
    } 
} 

Vielen Dank!

Lucas

+0

Verwenden Sie QTextDocument –

Antwort

1

Habe ich es endlich. Einer der Header, die ich sendete, war

request.setRawHeader("Accept-Encoding", "gzip, deflate"); 

, die die Antwort verursacht wurde, um komprimiert zu werden. Sobald ich diese Linie entfernt habe, hat alles perfekt funktioniert.