Qt使用https协议发送带参数的post请求
背景:
现在公司项目需要做一个检测更新的功能,通过访问后台接口,判断是否需要更新。
后台接口是 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请求的更多相关文章
- Android使用volley发送带参数的post请求
用参数方式可以解决E/Volley: [777] BasicNetwork.performRequest: Unexpected response code 500 for XXXXX 1.Strin ...
- python_request的安装及模拟json的post请求及带参数的get请求
一.Requests模块安装 安装方式一:执行 pip install -U requests 联网安装requests 安装方式二:进入https://pypi.org/project/reques ...
- JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求 哇,一看标题怎么这么长啊,其实意思很简单,哥讨厌用HTTP Client做POST与GET提交 觉得那个毕竟是别人写 ...
- requests接口自动化2-url里不带参数的get请求
最常用的是get,post请求,然后是put,delete,其他方法很少用 1. get请求几种方式 1.1.url里不带参数的get请求 接口请求fiddler返回内容: import reques ...
- Linux中使用curl命令发送带参数的get请求和post请求
GET 请求 curl命令 + 请求接口的地址 curl http://**.**.***.**/SeedAgile/SeedApi/querySprintByRequirementNo?parame ...
- 【笔记】Asp.Net WebApi对js POST带参数跨域请求的支持方案
先说下需求:在原来的WebApi项目中增加对js跨域的请求支持,请求方式:以POST为主,webapi路由规则根据原项目需求修改如下: public static void Register(Http ...
- 如何使用HttpClient来发送带客户端证书的请求,以及如何忽略掉对服务器端证书的校验
最近要做客户端和服务器端的双向认证,在客户端向服务器端发送带证书的请求这里有一点问题,网上的例子大多都不太好使,于是找了github上httpclient源代码中的例子改造了一下,终于弄明白了 git ...
- postman发送带cookie的http请求
1:需求:测试接口的访问权限,对于某些接口A可以访问,B不能访问. 2:问题:对于get请求很简单,登录之后,直接使用浏览器访问就可以: 对于post请求的怎么测试呢?前提是需要登录态,才能访问接口. ...
- requests模块发送带headers的Get请求和带参数的请求
1.在PyCharm开发工具中新建try_params.py文件: 2.try_params.py文件中编写代码: import requests#设置请求Headers头部header = {&qu ...
- ajax head带参数两次请求
ajax请求head里带数据 客户端先发一次option看看能不能登录,然后再发一次post
随机推荐
- git修改地址三种方法
1.修改命令 git remote set-url origin [NEW_URL] 2.先删后加 git remote rm origin git remote add origin [url]3. ...
- 【Azure 事件中心】Event Hubs如何获取其中存放的历史消息
问题描述 使用Azure Event Hub服务,除了正常的生产,消费消息以外,如果想拿到Event Hub中存储的历史消息?有什么方法呢? 问题解答 获取 Event Hubs 存储的历史消息,首先 ...
- 【Azure API 管理】 为APIM创建一个审批订阅申请的RBAC角色,最少的Action内容是什么呢?
问题描述 在使用APIM服务中,需要为专门的一组用户赋予特殊的权限:审批APIM用户的对产品的订阅.需要自定义一个RBAC角色,那么如何来设置最少的Action满足需求呢? 问题解答 要对APIM订阅 ...
- 【Azure 应用服务】App Service与Application Gateway组合使用时发生的域名跳转问题如何解决呢?
问题描述 为App Service配置了应用服务网关(Application Gateway),并且为Application Gateway配置了自定义域名,通过浏览器访问时,出现域名跳转问题,由自定 ...
- 【Azure 存储服务】Azure Blob下面是否可以创建子文件夹
问题描述 如何在Azure Storage Account(存储账户) 门户上为 Container 创建子文件夹? 问题解决 经验证,没有办法在门户上直接创建文件夹,不过可以使用Azure Stor ...
- 使用go语言开发自动化API测试工具
前言 上一篇文章说到我还开发了一个独立的自动测试工具,可以根据 OpenAPI 的文档来测试,并且在测试完成后输出测试报告,报告内容包括每个接口是否测试通过和响应时间等. 这个工具我使用了 go 语言 ...
- Harbor 2.1.2 安装部署
环境 首先需要准备好 Docker + Docker-Compose 环境,Docker 在 CentOS 7.x 的安装教程请参考 这篇文章,后续文章假设你已经安装好了上述环境. 安装 标准安装 首 ...
- 遥感图像镶嵌拼接:ENVI的Pixel Based Mosaicking工具操作方法
本文介绍基于ENVI软件,利用"Pixel Based Mosaicking"工具实现栅格遥感影像镶嵌拼接的方法. 首先需要说明的是,本文需要镶嵌的遥感影像并不含地理参考信 ...
- Rtsp转Flv在浏览器中播放
目录 概述 环境 项目目录清单 项目搭建步骤 引入相关npm依赖 实例化一个express应用 创建WebsocketServer并解析rtsp 使用flv播放 浏览器中测试 代码 引用 概述 众所周 ...
- [更新/已解决] Nodejs 16.18.0 和 Nodejs 18.16.0 两个版本同时共存 nvm-desktop
[更新/已解决] https://github.com/1111mp/nvm-desktop/blob/main/README-zh_CN.md 软件名字叫 nvm-desktop 装完 window ...