2017-07-19 8 views
0

QNetworkAccessManagerを使用してQt(5.8)でWebページのアクティビティをシミュレートしようとしています。私はFirefoxのFireBugプラグインを使って各Get/Postリクエストを分析し、適切なヘッダーをコピーしています。私の最初のGETリクエストで、私はQNetworkReplyオブジェクトを取得します。私はすべてのヘッダーを検査しており、それは謝罪応答です。しかし、私がデータを試してみると、私は奇妙なフォーマットになります。 Wiresharkの中にこのパケットを表示すると、それは放火犯の場合と同様、HTML応答が現れ、何かのように:しかしQtでHTTP GET応答に奇妙なエンコーディングが発生する

<!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" />... 

、私はQByteArrayへの私の応答を読んでいます、デバッガはこの変数であることを言う:

\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... 
やテキストファイルにこのQByteArrayを保存するとき、それは次のようになります。

‹  µ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œè– 

誰もが私が間違っているのを教えすることはできますか?私はエンコードの問題のように感じる。私のコードは次のようになります。

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(); 
     } 
    } 
} 

多くの感謝!

ルーカス

+0

QTextDocumentを使用する –

答えて

1

私はついにそれを理解しました。送信していたヘッダーの1つは、応答が圧縮されていた

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

です。一度このラインを外すと、すべてが完璧に機能しました。

関連する問題