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
随机推荐
- SDWebImage从小白到大师蜕变
简介 SDWebImage提供的简洁的获取远程URL图片的API:平时开发中使用最多场景就是列表中的cell中要显示远程图片的需求,在具体的实现中要避免加载图片造成的界面卡顿,列表卡顿等现象的出现:所 ...
- [Rust] 命名习惯
[Rust] 命名习惯 通用习惯 CamelCase: 首位是大写字母的单词,没有分隔符: snake_case: 使用下划线作为分隔符,小写单词: SCREAMING_SNAKE_CASE: 使用下 ...
- B. Ela's Fitness and the Luxury Number
思路: \[能想到平方是比较特殊的,因为x*x一定是x的倍数也就是说\sqrt[2]{x*x} = {x} \] \[所以需要考虑平法之间的数手模一下样例可以发现 [x^2 ,(x+1)^2)之间是x ...
- 被 两个 vetur 玩惨了的几天,可不是vue-helper的锅
最近由idea 转 vscode,因为 由原来一个项目变成7个项目了,2G内存不够看. 然后发现点击组件跳转不好使,装个vue-helper也是有一部分不好使. 下载vue-helper源码一通查,发 ...
- Window快速切换工作目录命令
原文: Window命令行快速切换工作目录命令 - Stars-One的杂货小窝 以往,在cmd命令行里,如果是当前在C盘,想切换到D盘的某个文件夹,得这样写: cd D:/temp D: PS: D ...
- CC++ 如何确定一个变量的类型(恶心的指针)
如何确定一个变量的类型 目录 如何确定一个变量的类型 1.如果一个变量声明中没有括号 2.变量声明中有括号 3.检测一下(逐渐变态··· 4.总结 1.如果一个变量声明中没有括号 如果一个变量声明中没 ...
- TCL之基本语法1
TCL之基本语法1 1:set and puts set就是变量声明,这个声明在需要使用的指令下会自动执行,不会出现没有声明的错误.但是对于puts这类定向访问的是不能没有声明的.这里简单理解TCL ...
- FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
FFmpeg内置了aac音频格式,在<FFmpeg开发实战:从零基础到短视频上线>一书的"5.2.2 Linux环境集成mp3lame"又介绍了如何给FFmpeg集 ...
- 实现一个简单的echarts柱状图PythonFlask
bar.html 1 <!DOCTYPE html> 2 <html style="height: 100%"> 3 <head> 4 < ...
- SQLSERVER 的表分区(水平) 操作记录2
1 ----(非原创只是自己整理记录!!!)---------------原文地址: https://www.cnblogs.com/libingql/category/184251.h ...