qt访问java rest接口_QT调用Restful服务

本文介绍了一个使用Qt进行RESTful API调用的示例,详细展示了如何通过Qt发送GET和POST请求到Java服务。代码中包含了设置请求头、处理不同HTTP方法以及获取响应内容的方法。
摘要由CSDN通过智能技术生成

#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值