首页 > 其他分享 >QT的http post

QT的http post

时间:2023-06-18 12:32:58浏览次数:38  
标签:http QT parent MAINWINDOW QNetworkReply ui post include MainWindow

QT += network

  

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QWidget>
#include <QObject>
#include <QDebug>
#include <QHttpMultiPart>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QMetaObject>
#include <QEventLoop>
#include <QJsonDocument>            //以下是json数据传送所需头文件
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private slots:
    void finishedSlot(QNetworkReply*);
private:
    Ui::MainWindow *ui;



};
#endif // MAINWINDOW_H

  

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSslSocket>

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

qDebug()<< QSslSocket::sslLibraryBuildVersionString();
    QNetworkAccessManager * net_mgr = new QNetworkAccessManager(this);
        connect(net_mgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(finishedSlot(QNetworkReply*)));

        QNetworkRequest net_request;
        net_request.setUrl(QUrl("https://saas-0-core.0.cn/v1/fn_saas_core/req_rpc_cmd"));

    // 下边这行也很重要,要发送json格式的数据必须要在header里设置,不然不会成功的
        net_request.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));
        QJsonObject object;

        object.insert("cmd", "req_get_machine_info_iot_base_bu_mid");
        QJsonObject object2;
        object2.insert("mid", 9109513);
        object.insert("data", object2);
        QJsonDocument document=QJsonDocument(object);

        // 这里要将json格式的数据转换为QByteArray才行
        QByteArray post_data = document.toJson(QJsonDocument::Compact);
        net_mgr->post(net_request, post_data);


}

void MainWindow::finishedSlot(QNetworkReply* reply)
{
    if (reply->error() == QNetworkReply::NoError)
    {
        QByteArray bytes = reply->readAll();
        // 下边我们将收到的body部分解析为json格式,其中有个key是status
        QJsonDocument jsonDocument = QJsonDocument::fromJson(bytes);
        qDebug()<<jsonDocument;
        QJsonObject jsonObject = jsonDocument.object().find("data").value().toObject();
        QString value = jsonObject["productKey"].toString();
        qDebug()<<"PID:"<<value;


    }
    reply->deleteLater();
}


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

  



标签:http,QT,parent,MAINWINDOW,QNetworkReply,ui,post,include,MainWindow
From: https://blog.51cto.com/ahuo/6508089

相关文章

  • Qt编写手机版本视频播放器和Onvif工具(可云台和录像)
    一、前言用Qt+ffmpeg写播放器很多人有疑问,为何不用Qt自己的多媒体框架来写,最重要的原因是Qt自带的目前都依赖具体的本地解码器,如果解码器不支持,那就是歇菜的,最多支持个MP4格式,而且在手机上也都是支持本地少部分格式的文件,对于各种视频流完全无能无力。而ffmpeg就不一样了,本身就是......
  • 使用nginx作为反向代理配置多个域名的https证书
    偶然想到,自己还没有做好使用nginx作为反向代理,搭配多个域名的https,心血来潮,就问了下bing怎么做。docker-compose.ymlversion:'3.7'services:nginx-proxy:image:jwilder/nginx-proxycontainer_name:nginx-proxyrestart:alwaysports:-80:80......
  • QT基础教程之一创建Qt项目
    QT基础教程1创建Qt项目根据模板创建打开QtCreator界面选择NewProject或者选择菜单栏【文件】-【新建文件或项目】菜单项弹出NewProject对话框,选择QtWidgetsApplication选择【Choose】按钮,弹出如下对话框设置项目名称和路径,按照向导进行下一步向导会默认添加一个继承自CMain......
  • Qt 多语言实现
    简介QtLinguist提供了一套加速应用程序翻译和国际化的工具。Qt使用单一的源码树和单一的应用程序二进制包就可同时支持多个语言和书写系统。使用QTranslator来加载生成的qm文件,就可以让程序显示指定的语言。//国际化翻译QStringlanguage="CH";//默认为中文,后期可以使......
  • PySide6(Qt for Python) QTableWidget表头边框线问题
    这个问题是在Windows10平台下特有问题。网络上有很多QtC++的解决方案。但是没有特定的PySide6的解决方案(以下是参考的QtC++的解决方案)。链接:https://blog.csdn.net/qq_22642239/article/details/122863344问题描述C++的解决方案是设置纵横表头的样式表:horizontalHeader,v......
  • https请求报Connection reset问题
    背景:使用HttpsURLconnection或者HttpURLConnection进行https请求时,有时会报Connectionreset异常原因:这是因为客户端的TLS版本服务端不支持的原因。对于JDK1.6,支持SSLv2、SSLv3、TLSv1,默认使用TLSv1对于JDK1.7,支持SSLv2、SSLv3、TLSv1、TLSv1.1、TLSv1.2,默认使用TLSv1.1对于JDK1.8......
  • Python如何爬取京东mac电脑的数据?全球HTTP代理应用
    618要来了,不买点啥总觉得少了点什么,正好我用了5 6 年的电脑想换,这可不就来活了嘛!我们用Python也能简单获取某东上的mac电脑价格。不整虚的,直接就是一个冲,来看代码:importrequestsfrombs4importBeautifulSoupdefget_jd_laptops():url="https://search.jd.com/Search......
  • js拦截XMLHttpRequest
    需要做一个扩展,拦截XMLHttpRequest,修改response里面部分值,查阅资料后一般是通过下面方法拦截letoldOpen=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(method,url,async,user,password){//拦截open//console.log(url)retu......
  • macOS 安装 postgreSQL
    PostgreSQLDocumentationbrewinstallpostgresqlbrewservicesstartpostgresqlcreatedb#Bydefault,adatabasewiththesamenameasthecurrentuseriscreated.#dropdbpsql......
  • PostgreSQL 已领先于 MySQL 成为开发人员的首选
    一项针对90,000名开发人员的调查显示,PostgreSQL领先于MySQL作为数据库引擎的选择,与去年的同一项调查相比有显着变化。2023年5月的调查由开发人员问答网站StackOverflow进行,有45.55%的受访者使用PostgreSQL,而MySQL和SQLite分别为41.09%和30.9%。三年前,同一......