Qt实现客户端发送Http请求
首先开发一个Http的服务器,这里使用springboot快速开发一个Get接口和一个Post接口
@RestController
public class httpServer {
@GetMapping("/get")
public String getTest(String a){
return "get return:hello "+a;
}
@PostMapping("/post")
public String postTest(String b){
return "post return:hello "+b;
}
}
指定服务器的端口为8088
ok,下面回到qt ,新建一个QWidget窗口,
添加网络支持
QT += network
进入ui设计,拖入4个label控件和一个button控件
回到wid窗口对应的代码区
输入一下代码
#include "widget.h"
#include "ui_widget.h"
#include<QNetworkAccessManager>
#include<QNetworkReply>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
void Widget::finishedSlot(QNetworkReply *reply)
{
if (reply->error() == QNetworkReply::NoError)
{
QByteArray bytes = reply->readAll();
qDebug() << bytes;
if(reply->url()==QUrl("http://127.0.0.1:8088/get?a=qt")){
ui->label_3->setText(bytes);
}else{
ui->label_4->setText(bytes);
}
}
else
{
qDebug() << "finishedSlot errors here";
qDebug( "found error .... code: %d\n", (int)reply->error());
qDebug(qPrintable(reply->errorString()));
}
reply->deleteLater();
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
QNetworkAccessManager *accessManager = new QNetworkAccessManager(this);
connect(accessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(finishedSlot(QNetworkReply*)));
QNetworkRequest request;
request.setUrl(QUrl("http://127.0.0.1:8088/get?a=qt"));
//get
accessManager->get(request);
request.setUrl(QUrl("http://127.0.0.1:8088/post"));
QByteArray postData;
postData.append("b=qt");
//post
accessManager->post(request, postData);
}
在button的clicked的槽函数中添加http请求的处理,分别发送Get请求和Post请求
启动项目看看:
点击发送
成功了 还是比较简单的。
还没有评论,来说两句吧...