我是 QT 开发的新手。我正在尝试对休息服务执行简单的 Post Request 以读取 Json 数据。
目前我写过:
void LoginWindow::on_pushButton_clicked(){
// Setup the webservice url
QUrl serviceUrl = QUrl("http://urlrestservice.com");
QByteArray postData;
postData.append("request=userdata&");
postData.append("user=myusername&");
postData.append("password=mypasswod");
// Call the webservice
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
//QNetworkRequest::setHeader();
QNetworkRequest request(serviceUrl);
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(
QString("text/xml")));
connect(manager, SIGNAL(finished(QNetworkReply*)), this,
SLOT(serviceRequestFinished(QNetworkReply*)));
manager->post(request, postData);
}
Run Code Online (Sandbox Code Playgroud)
之后我不知道如何进行。我做了一个空的方法
void LoginWindow::serviceRequestFinished(QNetworkReply* reply){ }
Run Code Online (Sandbox Code Playgroud)
但我不知道在他们里面怎么做。
Post 请求应该返回给我:
{
"response": {
"status": "200",
"message": "Correct request"
},
"data": [
[
{
"href": "link",
"text": "string matr"
},
{
"href": "link",
"text": "string type"
},
{
"href": "link",
"text": "string name"
},
{
"href": "link",
"text": "string state"
}
]
]
}
Run Code Online (Sandbox Code Playgroud)
我读过存在一个库 QJson,但我认为官方文档有点混乱,我不知道如何继续。
到目前为止似乎还可以,接下来您应该向您的 serviceReqiestFinished 添加一些代码。
#include <QNetworkReply>
#include <QJsonValue>
#include <QJsonValueRef>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
void LoginWindow::serviceRequestFinished(QNetworkReply* reply){
QByteArray buffer = reply->readAll();
qDebug() << buffer;
QJsonDocument jsonDoc(QJsonDocument::fromJson(buffer));
QJsonObject jsonReply = jsonDoc.object();
QJsonObject response = jsonReply["response"].toObject();
QJsonArray data = jsonReply["data"].toArray();
qDebug() << data;
Run Code Online (Sandbox Code Playgroud)
让我知道它是否有效
| 归档时间: |
|
| 查看次数: |
4694 次 |
| 最近记录: |