背景:

现在公司项目需要做一个检测更新的功能,通过访问后台接口,判断是否需要更新。

后台接口是 https 协议的,接口需要post请求,需要带参数,来判断是哪个软件需要做检测更新的操作。

客户端软件使用Qt写的

重点 & 注意事项:

1.https协议,需要用到 ssl,如果跑起来报错,基本都是 ssl 的问题,我的Qt版本是 5.12.10,需要安装:Win32OpenSSL-1_1_1q.msi,然后找到两个动态库(libcrypto-1_1.dll 、libssl-1_1.dll)放在exe同级目录

2.Win32OpenSSL 官方下载地址:https://slproweb.com/products/Win32OpenSSL.html

3.Win32OpenSSL 我自己下载的安装包,下载地址:https://www.aliyundrive.com/s/FqTfEDN9i83

思路清晰,代码简单,直接上代码:

.h

#pragma once

#include <QtWidgets/QDialog>
#include "ui_QtWidgetsApplication1.h" #include "qmessagebox.h"
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply> class QtWidgetsApplication1 : public QDialog
{
Q_OBJECT public:
QtWidgetsApplication1(QWidget *parent = nullptr);
~QtWidgetsApplication1(); QNetworkAccessManager* m_http;
QNetworkReply* m_res; public slots:
void test();
void testFinished(); private:
Ui::QtWidgetsApplication1Class ui;
};

.cpp

#include "QtWidgetsApplication1.h"

QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(test()));
} QtWidgetsApplication1::~QtWidgetsApplication1()
{} void QtWidgetsApplication1::testFinished()
{
if (m_res->error() == QNetworkReply::NoError)
{
QString ba = m_res->readAll(); // 自行解析接口返回数据
QMessageBox::warning(this, "123", "345");
}
else
{
QMessageBox::warning(this, "123", m_res->errorString());
}
} void QtWidgetsApplication1::test()
{
m_http = new QNetworkAccessManager(); //设置头信息
QNetworkRequest m_url;
m_url.setUrl(QUrl("https://pmp.eloam.net/api/ota/findFadVersion"));
m_url.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); QSslConfiguration m_sslConfig = QSslConfiguration::defaultConfiguration();
m_sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone);
m_sslConfig.setProtocol(QSsl::TlsV1_2);
m_url.setSslConfiguration(m_sslConfig); char cByte[1024] = "{\"as\":\"123456\", \"ks\": \"123456\", \"productCode\": \"HSPS\", \"version\": \"V1.2.3\"}";
QByteArray bate(cByte); //发送数据
m_res = m_http->post(m_url, bate);
connect(m_res, &QNetworkReply::finished, this, &QtWidgetsApplication1::testFinished); }

Qt使用https协议发送带参数的post请求的更多相关文章

  1. Android使用volley发送带参数的post请求

    用参数方式可以解决E/Volley: [777] BasicNetwork.performRequest: Unexpected response code 500 for XXXXX 1.Strin ...

  2. python_request的安装及模拟json的post请求及带参数的get请求

    一.Requests模块安装 安装方式一:执行 pip install -U requests 联网安装requests 安装方式二:进入https://pypi.org/project/reques ...

  3. JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求

    JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求 哇,一看标题怎么这么长啊,其实意思很简单,哥讨厌用HTTP Client做POST与GET提交 觉得那个毕竟是别人写 ...

  4. requests接口自动化2-url里不带参数的get请求

    最常用的是get,post请求,然后是put,delete,其他方法很少用 1. get请求几种方式 1.1.url里不带参数的get请求 接口请求fiddler返回内容: import reques ...

  5. Linux中使用curl命令发送带参数的get请求和post请求

    GET 请求 curl命令 + 请求接口的地址 curl http://**.**.***.**/SeedAgile/SeedApi/querySprintByRequirementNo?parame ...

  6. 【笔记】Asp.Net WebApi对js POST带参数跨域请求的支持方案

    先说下需求:在原来的WebApi项目中增加对js跨域的请求支持,请求方式:以POST为主,webapi路由规则根据原项目需求修改如下: public static void Register(Http ...

  7. 如何使用HttpClient来发送带客户端证书的请求,以及如何忽略掉对服务器端证书的校验

    最近要做客户端和服务器端的双向认证,在客户端向服务器端发送带证书的请求这里有一点问题,网上的例子大多都不太好使,于是找了github上httpclient源代码中的例子改造了一下,终于弄明白了 git ...

  8. postman发送带cookie的http请求

    1:需求:测试接口的访问权限,对于某些接口A可以访问,B不能访问. 2:问题:对于get请求很简单,登录之后,直接使用浏览器访问就可以: 对于post请求的怎么测试呢?前提是需要登录态,才能访问接口. ...

  9. requests模块发送带headers的Get请求和带参数的请求

    1.在PyCharm开发工具中新建try_params.py文件: 2.try_params.py文件中编写代码: import requests#设置请求Headers头部header = {&qu ...

  10. ajax head带参数两次请求

    ajax请求head里带数据 客户端先发一次option看看能不能登录,然后再发一次post

随机推荐

  1. [App Service for Windows]通过 KUDU 查看 Tomcat 配置信息

    问题描述 在App Service 中选择了Java Tomcat后,如何查看Azure App Service的Tomcat的配置信息呢? 问题解答 可以通过以下的 3个步骤查看: 第一步:登录 K ...

  2. 【Azure Developer】示例: 在中国区调用MSGraph SDK通过User principal name获取到User信息,如Object ID

    问题描述 示例调用MSGraph SDK通过User principal name获取到User信息,如Object ID. 参考资料 选择 Microsoft Graph 身份验证提供程序 : ht ...

  3. 【Azure 环境】Azure CLI 获取Access Token的脚本实例

    问题描述 如何使用azure CLI命令获取到中国区的Access Token呢? 问题解答 首先,需要通过 az cloud set --name AzureChinaCloud 来设置登录中国区的 ...

  4. java GUI 快速入门

    java 中编写 GUI 有两中工具包,分别为 AWT.Swing. Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和方法. AWT 和 Swing 都能跨平台使用:AWT 会 ...

  5. Ubuntu20下安装NFS

    安装nfs-kernel-server apt install nfs-kernel-server 想好自己要把哪个目录作为NFS共享目录,创建目录 mkdir /mydata vim /etc/ex ...

  6. CPNtools协议建模安全分析---实例(三)

    对于复杂的系统的建模或者协议的建模,各种颜色集的定义以及变量的声明很重要,要区分明确,对于函数行业进程的定义更加复杂.CPN对协议的描述只适合简单逻辑性的协议分析,如果协议包括复杂的算法,那么CPN就 ...

  7. Java基础全程复习笔记(值得参考)

    Java基础复习笔记 第01章:Java语言概述 1. Java基础学习的章节划分 第1阶段:Java基本语法 Java语言概述.Java的变量与进制.运算符.流程控制语句(条件判断.循环结构).br ...

  8. mongo Payload document size is larger than maximum of 16777216. 如何处理

    MongoDB中的文档大小限制为16MB(即16777216字节).如果你遇到Payload document size is larger than maximum of 16777216的错误,意 ...

  9. getUserMedia 获取 摄像头 拍照 代码 1920-1080 video canvas

    getUserMedia 获取 摄像头 拍照 代码 1920-1080 video canvas 20210422 摄像头代码 是基于 https 协议的,需要开启协议后才能测试 http-serve ...

  10. [好文推荐] vue3 源码分析 mini-vue 写的不错

    [阮一峰推荐]学习 vue3 源码的利器 git clone https://github.com/cuixiaorui/mini-vue.git