C++ QT-Get请求解析JSON
我正在尝试发出一个C++ QT-Get请求解析JSON,c++,qt,C++,Qt,我正在尝试发出一个GET请求,以便对用户进行身份验证。下面是我的代码: void MainWindow::on_loginButton_clicked() { QString email = "test"; QString password = "test"; nam = new QNetworkAccessManager(this); QObject::connect(nam, SIGNAL(finished(QNetworkReply*)),
GET请求
,以便对用户进行身份验证。下面是我的代码:
void MainWindow::on_loginButton_clicked()
{
QString email = "test";
QString password = "test";
nam = new QNetworkAccessManager(this);
QObject::connect(nam, SIGNAL(finished(QNetworkReply*)),
this, SLOT(serviceRequestFinished(QNetworkReply*)));
QUrl url("http://url.com/api.php?action=authenticate_user&email=" + email + "&password" + password);
QNetworkReply* reply = nam->get(QNetworkRequest(url));
}
void MainWindow::serviceRequestFinished(QNetworkReply* reply)
{
if(reply->error() == QNetworkReply::NoError) {
QStringList propertyNames;
QStringList propertyKeys;
QString strReply = (QString)reply->readAll();
qDebug() << strReply;
QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8());
QJsonObject jsonObject = jsonResponse.object();
QJsonArray jsonArray = jsonObject["status"].toArray();
qDebug() << jsonObject["status"].toString();
foreach (const QJsonValue & value, jsonArray)
{
QJsonObject obj = value.toObject();
qDebug() << value.toString();
}
} else {
qDebug() << "ERROR";
}
delete reply;
}
服务器会告诉您,您的请求缺少参数。仔细查看请求并仔细检查
QUrl url("http://url.com/api.php?action=authenticate_user&email=" + email + "&password" + password);
在我看来,URL是错误的,它不应该说
“&password=“+…
那里吗?如果我在浏览器中复制完全相同的URL
,它会返回一个JSON,所以我认为完全相同的URL不会有问题吗?所以一个包含…&电子邮件的url=foo@example.com&passwordMySecrectPassword在浏览器中工作?这个问题似乎离题了,因为它是关于一个简单的打字错误。更正打字错误可以解决这个问题。这个问题和答案对其他人都没有用处。如果有任何问题,尝试的解决方案存在安全相关问题,不应作为参考材料。
QUrl url("http://url.com/api.php?action=authenticate_user&email=" + email + "&password" + password);