以下是一个简单的Qt C++封装类,用于实现HTTP客户端并通过POST方法发送JSON字符串:
#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QDebug>
class HttpClient : public QObject
{
Q_OBJECT
public:
explicit HttpClient(QObject *parent = nullptr) : QObject(parent)
{
manager = new QNetworkAccessManager(this);
connect(manager, &QNetworkAccessManager::finished, this, &HttpClient::onReplyFinished);
}
void postJson(const QUrl& url, const QByteArray& jsonData)
{
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
manager->post(request, jsonData);
}
signals:
void replyReceived(QByteArray response);
private slots:
void onReplyFinished(QNetworkReply *reply)
{
if (reply->error() == QNetworkReply::NoError) {
QByteArray response = reply->readAll();
emit replyReceived(response);
} else {
qDebug() << "Error:" << reply->errorString();
}
reply->deleteLater();
}
private:
QNetworkAccessManager *manager;
};
在这个示例中,我们定义了一个名为HttpClient
的类,继承自QObject。该类包含了一个私有成员变量manager
,用于处理网络请求。在构造函数中初始化了manager
对象,并连接了finished
信号到自定义的槽函数onReplyFinished()
。
在公有成员函数postJson()
中,我们创建一个QNetworkRequest
对象并设置头部为JSON格式,然后使用manager->post()
方法发送POST请求。
当请求完成时,会调用槽函数onReplyFinished()
来处理响应。如果请求成功,则通过发出自定义信号replyReceived()
将服务器返回的数据传递出去;如果出现错误,则输出错误信息。
你可以根据需要进一步扩展和优化这个类,以满足具体的需求。
内容由零声教学AI助手提供,问题来源于学员提问