qt使用http get和post

这篇具有很好参考价值的文章主要介绍了qt使用http get和post。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

qt使用http get和post

准备

使用到网络编程,需要在Pro文件中加入如下语句

QT       += network

get请求

widge.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkAccessManager>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    void get(QString str);
    void getBack(QNetworkReply* reply);

private slots:
    void on_pushButton_2_clicked();

private:
    Ui::Widget *ui;
    QNetworkAccessManager * manager;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QJsonObject>
#include <QJsonDocument>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_2_clicked()
{
    QString str = ui->lineEdit_2->text();

    manager = new QNetworkAccessManager(this);
    connect(manager,&QNetworkAccessManager::finished,this,&Widget::getBack);//通信完成后,自动执行getBack
    get(str);
}


void Widget::get(QString str)
{
    // 构造请求
    QNetworkRequest request;
    request.setUrl(QUrl(str));
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
    // 发送请求
    manager->get(request);

}


void Widget::getBack(QNetworkReply* reply)
{
    ui->textEdit_2->setText(reply->readAll().data());
}

qt使用http get和post

post请求

widge.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkAccessManager>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    void post(QString str);
    void postBack(QNetworkReply* reply);

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
    QNetworkAccessManager * manager;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QJsonObject>
#include <QJsonDocument>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    QString str = ui->lineEdit->text();

    manager = new QNetworkAccessManager(this);
    connect(manager,&QNetworkAccessManager::finished,this,&Widget::postBack);//通信完成后,自动执行getBack
    post(str);

}

//具体实现代码参考下面的分类情况
void Widget::post(QString str)
{
    QByteArray dataArray;
    ...
    request.setUrl(QUrl(str));
    // 发送请求
    manager->post(request, dataArray);

}


void Widget::postBack(QNetworkReply* reply)
{
    ui->textEdit->setText(reply->readAll().data());
}
qt使用http get和post

post请求的数据格式

参数写在url后面

跟get一样,dataArray为空即可
qt使用http get和post

http://127.0.0.1:18080/define/login?userId=1&password=123

void Widget::post(QString str)
{
    // 表单数据
    QByteArray dataArray;
    // 构造请求
    request.setUrl(QUrl(str));
    //可以不写,都能识别,默认为x-www-form-urlencoded
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
    // 发送请求
    manager->post(request, dataArray);
}
content-type missing in HTTP POST, defaulting to application/x-www-form-urlencoded. Use QNetworkRequest::setHeader() to fix this problem.

对应的后端接口

public ResponseEntity<Map> login(Integer userId, String password)

public ResponseEntity<Map> login(@RequestParam Map<String, String> params)
使用application/x-www-form-urlencoded

form表单数据被编码为key1=value1&key2=value2格式发送到服务器
qt使用http get和post

http://127.0.0.1:18080/define/login

使用QByteArray

void Widget::post(QString str)
{
    // 表单数据
    QByteArray dataArray;
    dataArray.append("userId=1&");
    dataArray.append("password=123");
    // 构造请求
    request.setUrl(QUrl(str));
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
    // 发送请求
    manager->post(request, dataArray);
}

或使用QString转utf8

void Widget::post(QString str)
{
    // 表单数据
    QString ss = "userId=1&password=123";
    // 构造请求
    request.setUrl(QUrl(str));
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
    // 发送请求
    manager->post(request, ss.toUtf8());
}

postman访问接口

qt使用http get和post

对应的后端接口

public ResponseEntity<Map> login(Integer userId, String password)

public ResponseEntity<Map> login(@RequestParam Map<String, String> params)
使用application/json

内容数据为Json对象
qt使用http get和post

http://127.0.0.1:18080/define/login

void Widget::post(QString str)
{
    // Json数据
    QJsonObject json;
    json.insert("userId", "1");
    json.insert("password", "123");

    QJsonDocument document;
    document.setObject(json);
    QByteArray dataArray = document.toJson(QJsonDocument::Compact);

    request.setUrl(QUrl(str));

    request.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json;charset=utf-8"));

    // 发送请求
    manager->post(request, dataArray);

}

postman访问接口
qt使用http get和post

对应的后端接口

public ResponseEntity<Map> login(@RequestBody User user)

public ResponseEntity<Map> login(@RequestBody Map<String, String> params)
使用multipart/form-data传送文件
qt使用http get和post

http://127.0.0.1:18080/define/upload

#include <QJsonObject>
#include <QFile>
#include <QJsonDocument>
#include <QHttpMultiPart>

void Widget::post(QString str)
{
    QString filePath = "/Users/xx/qthttp.jpg";
    QFile* file = new QFile(filePath);
    file->open(QIODevice::ReadOnly);

    QHttpMultiPart* multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);

    QHttpPart imagePart;
    imagePart.setHeader(QNetworkRequest::ContentDispositionHeader,
                      QVariant(QString("form-data; name=\"file\";filename=\"qthttp.jpg\";")));
    imagePart.setBodyDevice(file);
    multiPart->append(imagePart);

    // 构造请求
    QNetworkRequest request;
    request.setUrl(QUrl(str));

    // 发送请求
    manager->post(request, multiPart);
}

对应的后端接口文章来源地址https://www.toymoban.com/news/detail-478416.html

public ResponseEntity<Map> upload(@RequestParam("file") MultipartFile multipartFile)

到了这里,关于qt使用http get和post的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT实现客户端服务器HTTP(get请求、post请求)

    服务器代码如下: QtHttpForS.h QtHttpForS.cpp main.cpp QtHttpForS.ui 客户端代码: QtHttpForC.h QtHttpForC.cpp mian.cpp QtHttpForC.ui 程序运行效果: GET请求: POST请求: POST请求使用postman测试: 注意: 可以发现,在使用postman进行POST请求发送时,服务器接收到的请求头与QTSocket的POST请求的请求头

    2023年04月22日
    浏览(59)
  • Qt网络编程post请求,数据格式为json或x-www-form-urlencoded

    目录 Qt网络编程post请求,数据格式为json或x-www-form-urlencoded 一、.H文件 1、.h头文件 2、.h主代码 二、.CPP文件 1、主代码  三、响应信息 返回结果(Josn数据格式输出) 四、Post数据格式参数及数据类型定义 1、Post:application/x-www-form-urlencoded数据类型格式 2、Post:application/json数据

    2024年02月07日
    浏览(41)
  • ℰ悟透Qt—Http网络编程

    网络访问 API 建立在一个 QNetworkAccessManager 对象之上,该对象保存了发送请求所需的公共配置和设置。它包含代理和缓存配置,以及与此类问题相关的信号和可用于监视网络操作进度的回复信号。整个 Qt 应用程序只需要一个 QNetworkAccessManager 实例。由于 QNetworkAccessManager 基于

    2024年02月11日
    浏览(64)
  • 使用python get post数据 http https

    目的比较简单,测试,使用python来提交数据是非常简洁的,修改代码也容易,除了做人工智能,本身也是一个非常好的测试端工具 一个简单的示例程序,将 headers 内容置为’application/json’,为了演示,每次修改提交数据number的值,向服务器程序的8000端口提交data,for 循环提交

    2024年02月16日
    浏览(53)
  • 使用C#发送HTTP的Get和Post请求

    2024年02月07日
    浏览(56)
  • 【LibCurl】C++使用libcurl实现HTTP POST和GET、PUT

    libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证 libcurl的官网: http://curl.haxx.se/ 库下载地址: https://github.com/curl/curl/releases/tag/curl-7_71_1 初

    2024年04月17日
    浏览(98)
  • Qt 网络编程之美:探索 URL、HTTP、服务发现与请求响应

    Qt 网络编程是使用 Qt 框架进行网络应用开发的重要组成部分。Qt 是一个跨平台的 C++ 应用程序开发框架,广泛应用于各种领域,包括桌面应用、移动应用和嵌入式设备。在本文中,我们将探讨 Qt 网络编程的优势,以及本文涉及的主题,包括 URL、HTTP、服务发现和请求响应等。

    2023年04月23日
    浏览(52)
  • 【网络应用层协议】【HTTP】详解HTTP与HTTPS、POST 请求与 GET请求 、TCP与UDP、cookie和session的区别

    目录 1. HTTP和HTTPS的区别 2. POST 请求与 GET 请求区别 3. TCP与UDP的区别 4. cookie和session的区别

    2024年04月14日
    浏览(46)
  • uniapp发起post和get请求——this.$http.get 和 this.$http.post传参

    main.js按照内容自行修改

    2024年02月15日
    浏览(50)
  • (Qt) Http之Get请求使用基础

    http的操作是网络通信中非常常见的操作,其中广泛使用get,post两种操作。 本文将对Qt中,http的get请求做简单应用,来进行展示。 这里不做排版了,不然篇幅过大 [1] QNetworkAccessManager 对于每个 reply 的 finish 都会发送 finished 的信号。 如果一个 manager 处理多个请求可能会出现先

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包