qt html rest,QT调用Restful服务

#include "QtTestRestFulDemo.h"

#include

#include

#include

#include

QtTestRestFulDemo::QtTestRestFulDemo(QWidget *parent)

: QMainWindow(parent)

{

ui.setupUi(this);

connect(ui.pushButton_GET, SIGNAL(clicked()), this, SLOT(OnGETSlot()));

connect(ui.pushButton_POST, SIGNAL(clicked()), this, SLOT(OnPOSTSlot()));

}

void QtTestRestFulDemo::SendAndGetText(QString strUrl, MyMethod thod, QString strInput, QString &strMessage,QString &strResult)

{

QNetworkRequest oNetRequest;

oNetRequest.setUrl(QUrl(strUrl));

oNetRequest.setRawHeader("Content-Type", "application/octet-stream");

//oNetRequest.setRawHeader("Content-Type", "application/json");

//oNetRequest.setRawHeader("Content-Type", "application/xml");

//oNetRequest.setRawHeader("Content-Type", "application/octet-stream");

//oNetRequest.setRawHeader("Authorization", "Bearer global-0b9ad652-9671-4cd8-86e9-e1b288dfe1da"); //token时用

oNetRequest.setRawHeader("CLIENTVERSION", ("V1"));

//oNetReply = oNetAccessManager.put(oNetRequest, *request.getRequestData());

//oNetReply = oNetAccessManager.post(oNetRequest, *request.getRequestData());

//oNetReply = oNetAccessManager.get(oNetRequest);

//oNetReply = oNetAccessManager.deleteResource(oNetRequest);

QNetworkAccessManager oNetAccessManager;

QNetworkReply* oNetReply = NULL;

QByteArray inputTmp;

if (thod == POST)

{

oNetReply = oNetAccessManager.post(oNetRequest, strInput.toLocal8Bit());

}

else if (thod == GET )

{

oNetReply = oNetAccessManager.get(oNetRequest);

}

QEventLoop loop;

connect(oNetReply, SIGNAL(finished()), &loop, SLOT(quit()));

loop.exec();

//记录httpCode

int httpsCode = oNetReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();

QNetworkReply::NetworkError e = oNetReply->error();

strResult = oNetReply->readAll();

if (e)

{

strMessage = oNetReply->errorString();

}

}

void QtTestRestFulDemo::OnPOSTSlot()

{

//传Json时可以用下列操作

/*

QJsonObject oSendObject;

oSendObject.insert("id1", 1);

oSendObject.insert("name1", "a");

QJsonObject oSendObject2;

oSendObject2.insert("id2", 2);

oSendObject2.insert("name2", "b");

int Tmp1 = oSendObject.value("id1").toInt();

oSendObject.insert("second", oSendObject2);

int Tmp2 = oSendObject.value("second").toObject().value("id2").toInt();

if ( oSendObject.contains("name1") )

{

int h = 1;

}

QJsonDocument doc;

doc.setObject(oSendObject);

QByteArray body = doc.toJson();

QString str = body;

*/

QString strMessage;

QString strResult;

QString strUrl;

QString strInput = ui.textEdit_input->toPlainText();

strUrl += "http://" + ui.lineEdit_Url->text();

SendAndGetText(strUrl, POST, strInput,strMessage,strResult);

ui.textEdit_errorMessage->setText(strMessage);

ui.textEdit_Result->setText(strResult);

}

void QtTestRestFulDemo::OnGETSlot()

{

QString strMessage;

QString strResult;

QString strUrl;

QString strInput = ui.textEdit_input->toPlainText();

strUrl += "http://" + ui.lineEdit_Url->text();

SendAndGetText(strUrl, GET, strInput, strMessage, strResult);

ui.textEdit_errorMessage->setText(strMessage);

ui.textEdit_Result->setText(strResult);

}

————————————————

版权声明:本文为CSDN博主「kinghero123456」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u014378771/article/details/97759043

Qt Restful服务是指使用Qt框架进行开发的一种符合Restful架构风格的服务Restful是一种基于HTTP协议的一种轻量级的网络服务架构,它能够将网络资源通过URL进行统一的访问和操作。 Qt是一款跨平台的C++开发框架,有着丰富的网络编程支持,使得开发者能够便捷地实现Restful服务Qt提供了一系列的网络类,如QNetworkAccessManager,QNetworkRequest,QNetworkReply等,以及方便的信号与槽机制,可以与服务器进行数据交互。 开发Qt Restful服务需要注意以下几点: 1. 定义Restful接口:根据业务需求,定义好资源的URL、请求方法、请求参数等细节,符合Restful规范。 2. 使用QNetworkAccessManager发送网络请求:根据需要,使用QNetworkRequest进行请求的设置,发送网络请求,获取服务器返回的数据。 3. 解析服务器响应:根据服务器返回的数据格式(如JSON或XML),使用Qt提供的JSON解析库或XML解析库对数据进行解析,提取所需信息。 4. 处理业务逻辑:根据业务需求,对服务器返回的数据进行处理,更新UI界面或进行其他操作。 5. 错误处理:处理网络请求过程中可能出现的错误,如网络不可用、请求超时等,以提高用户体验。 Qt Restful服务具有跨平台的优势,可以在不同的操作系统上运行,如Windows、Linux、MacOS等。开发者可以基于Qt框架进行快速的开发和部署。 总之,Qt Restful服务是使用Qt框架开发的一种符合Restful架构风格的网络服务,具有方便、跨平台等特点,使得开发者可以轻松地实现网络服务开发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值