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();
}
}
}
多くの感謝!
ルーカス
QTextDocumentを使用する –