我有一个如下的 POST 请求,它按给定名称返回地址结果。
void MyClass::searchRequest(QString strname)
{
QUrl url(QString("http://myurl/searchaddress"));
QNetworkRequest req(url);
req.setRawHeader("Host", url.toAce(url.host()));
req.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");
req.setRawHeader("Accept", "*/*");
req.setRawHeader("Accept-Language", "en-IN,en;q=0.9,en-GB;q=0.8,en-US;q=0.7,ml;q=0.6");
req.setRawHeader("Accept-Encoding", "gzip,deflate");
req.setRawHeader("Keep-Alive", "300");
req.setRawHeader("Connection", "keep-alive");
req.setRawHeader("Referer", returl.toLatin1());
req.setRawHeader("Content-Length", "37");
req.setRawHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
QString form = QString("name=%1&action=searchaddress").arg(strname);
QByteArray formencoded = QUrl::toPercentEncoding(form, "&=", "");
m_reply = manager->post(req, formencoded);
connect(m_reply, SIGNAL(finished()), this, SLOT(onDataArrived()));
}
我已经检查了wireshark,请求返回以下格式。
{"result":"found","address":"my_address"}
我想要做的是获取地址并生成单独的字符串。下面显示了我的 onDataArrived SLOT 代码
void MyClass::onDataArrived()
{
disconnect(m_reply, SIGNAL(finished()), this, SLOT(onDataArrived()));
if (!reply->error())
{
QByteArray data = reply->readAll();
qDebug() << QString(data); // this gives me some output like "\u001F?b".
//I don't know how to extract the data here.
}
}
有人可以帮我提取地址并将结果转换为单独的字符串吗?