班级

HttpRequestWorker

不支持发送json,因此我将不在示例中使用它。对于这种情况,我将使用

QNetworkAccessManager

在PUT的情况下,您必须在.json中添加id,这样您就可以修改文件或通过代码进行修改,在本例中使用第二种情况:

放置:

主窗口.h

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include

#include

namespace Ui {

class MainWindow;

}

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow(QWidget *parent = nullptr);

~MainWindow();

private slots:

void on_pushButton_clicked();

void onManagerFinished(QNetworkReply *reply);

private:

Ui::MainWindow *ui;

QNetworkAccessManager manager;

};

#endif // MAINWINDOW_H

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include

#include

#include

#include

#include

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

connect(&manager, &QNetworkAccessManager::finished, this, &MainWindow::onManagerFinished);

}

MainWindow::~MainWindow()

{

delete ui;

}

void MainWindow::on_pushButton_clicked()

{

QNetworkRequest request(QUrl("http://hapi.fhir.org/baseDstu3/Patient/4705560"));

request.setRawHeader("Content-Type", "application/fhir+json");

QFile file("/path/of/themostsimplepatientJSON.json");

if(file.open(QIODevice::ReadOnly)){

QJsonDocument doc = QJsonDocument::fromJson(file.readAll());

QJsonObject obj = doc.object();

obj["id"] = "4705560"; // add ID

doc.setObject(obj);

manager.put(request, doc.toJson());

}

}

void MainWindow::onManagerFinished(QNetworkReply *reply)

{

qDebug()<< reply->readAll();

}

输出:

"{\n \"resourceType\": \"OperationOutcome\",\n \"text\": {\n \"status\": \"generated\",\n \"div\": \"

Operation Outcome

INFORMATION []
Successfully created resource \\\"Patient/4705560/_history/7\\\" in 5ms
INFORMATION []
No issues detected during validation
\\n\\t
\"\n },\n \"issue\": [\n {\n \"severity\": \"information\",\n \"code\": \"informational\",\n \"diagnostics\": \"Successfully created resource \\\"Patient/4705560/_history/7\\\" in 5ms\"\n },\n {\n \"severity\": \"information\",\n \"code\": \"informational\",\n \"diagnostics\": \"No issues detected during validation\"\n }\n ]\n}"

职务:

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include

#include

#include

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

connect(&manager, &QNetworkAccessManager::finished, this, &MainWindow::onManagerFinished);

}

MainWindow::~MainWindow()

{

delete ui;

}

void MainWindow::on_pushButton_clicked()

{

QNetworkRequest request(QUrl("http://hapi.fhir.org/baseDstu3/Patient")); // without ID

request.setRawHeader("Content-Type", "application/fhir+json");

QFile file("/path/of/themostsimplepatientJSON.json");

if(file.open(QIODevice::ReadOnly)){

QByteArray ba = file.readAll();

manager.post(request, ba);

}

}

void MainWindow::onManagerFinished(QNetworkReply *reply)

{

qDebug()<< reply->readAll();

}

输出:

"{\n \"resourceType\": \"OperationOutcome\",\n \"text\": {\n \"status\": \"generated\",\n \"div\": \"

Operation Outcome

INFORMATION []
Successfully created resource \\\"Patient/4728838/_history/1\\\" in 3ms
INFORMATION []
No issues detected during validation
\\n\\t
\"\n },\n \"issue\": [\n {\n \"severity\": \"information\",\n \"code\": \"informational\",\n \"diagnostics\": \"Successfully created resource \\\"Patient/4728838/_history/1\\\" in 3ms\"\n },\n {\n \"severity\": \"information\",\n \"code\": \"informational\",\n \"diagnostics\": \"No issues detected during validation\"\n }\n ]\n}"

下面是完整的示例

link

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐