背景:

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

后台接口是 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. Java Servlet单元测试

    Java Servlet单元测试 1. 解决痛点 虽然目前主流的开发方式,很多都是通过controll或者微服务提供api.但是不免还是需要写几个servlet完成接口开发.按照常规,servlet调 ...

  2. Java 多线程------测试 Thread中的常用方法 + 线程的优先级:

    1 package com.bytezero.threadexer; 2 3 import javax.sound.midi.Soundbank; 4 5 /** 6 * 测试 Thread中的常用方 ...

  3. Java abstract 关键字使用

    1 package com.bytezreo.abstractTest; 2 3 /** 4 * 5 * @Description Abstract 关键字使用 6 * @author Bytezer ...

  4. idea导入spring源码运行缺失cglib和objenesis的jar包的办法【亲测有效】

    idea导入spring源码运行缺失cglib和objenesis的jar包的办法[亲测有效] 亲测有效,网上说的大多废话 上图,操作如下,运行gradle

  5. ip 表单验证 vue iview

    ip 表单验证 vue iview template <Row v-show="config.bindIP"> <Col span="12"& ...

  6. 基于stm32H730的解决方案开发之SD卡的读写调试

    一 概述 在嵌入式小系统领域,SD卡存储是一个非常重要的功能.可从难度上,它又是非常难的.因为它涉及到两个大的功能点,一个是文件系统,这个难度非一般.另外一个是sd卡的底层驱动.涉及到的接口多,所以也 ...

  7. C语言中的强制转换

    许久没有遇到的问题   C语言真是博大精深,越使用它,就越发感觉到它的威力和恐怖,最近在做算法的时候,遇到了一个强转的错误,把人折腾的够受,这次要好好梳理一下了,希望下次不能再犯此类的问题. 强制转换 ...

  8. 关于使用Kotlin开发SpringBoot项目使用@Transactional和@Autowired的报错问题

    原文地址: 关于使用Kotlin开发SpringBoot项目使用@Transactional和@Autowired的报错问题 - Stars-One的杂货小窝 问题描述 最近在开发一个订单模块,需要出 ...

  9. SQL注入详细讲解概括-GET注入、POST注入、HEAD注入

    SQL注入详细讲解概括-GET注入.POST注入.HEAD注入 1.SQL注入流程 2.GET注入 3.POST注入 4.HEAD注入 一.SQL注入流程 1.SQL注入流程 · 寻找注入点-与数据库 ...

  10. 解锁通达信金融终端Level-2功能

    外挂方式,不修改原程序. 逆向通达信Level-2 续十一 (无帐号登陆itrend研究版) 逆向通达信Level-2 续十 (trace脱壳) 逆向通达信Level-2 续九 (无帐号打开itren ...