Qt libcurl的下载、配置及简单测试 (windows环境)

Qt libcurl的下载、配置及简单测试

  • 引言
  • 一、libcurl下载
  • 二、在Qt Creator中配置
  • 三、简单测试

引言

curl(Client URL)是一个开源的命令行工具和库,用于传输数据支持多种协议(如HTTP、HTTPS、FTP、SFTP等)。其核心库libcurl提供了跨平台的API,允许开发者通过代码实现网络通信功能。

一、libcurl下载

官方下载地址:https://curl.se/download.html

    1. 找到适合自己的版本 (我的是Windows 64),下载带有devel标识的。Linux找不到对应版本可下载源码编译.
      在这里插入图片描述
    1. 弹出如下界面选择第一个,下载的文件为:curl-8.15.0_4-win64-mingw.zip
      在这里插入图片描述

二、在Qt Creator中配置

    1. 新建项目,将压缩包里的includelib文件夹拷贝到.pro同目录,然后在.pro文件中增加如下语句:
LIBS += -L$$PWD/lib
LIBS += -lcurl
    1. cpp可直接引用#include "include/curl/curl.h"
    1. 也可通过配置环境变量来使用 (可选)

参考链接:
libcurl的下载、编译和在Qt中的配置:https://blog.csdn.net/qq_50150638/article/details/140176873
一个非常优秀的跨平台物联网开发常用的网络请求库libcurl:https://cloud.tencent.com/developer/article/1962259

三、简单测试

运行需注意:压缩包里bin目录下的libcurl-x64.dll,需拷贝到项目生成的.exe同目录下,或者配置环境变量。测试结果,接口返回的响应如下所示:
在这里插入图片描述


测试流程:

    1. Apifox这个软件上创建测试接口,保存后会自动启用Mock用于测试:
      在这里插入图片描述
    1. 在cpp里增加如下代码,注意替换Mock地址的URL
#include "include/curl/curl.h"
#include <QDebug>
#include <QJsonDocument>
#include <QByteArray>
#include <QJsonObject>size_t write(char *buffer, size_t size, size_t nmemb, std::string* stream)
{size_t len = size * nmemb;stream->append(buffer, len);return len;
}int main(int argc, char *argv[])
{CURL *curl;CURLcode res;std::string data;curl = curl_easy_init();if(curl) {curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:4523/m1/6845287-6559514-default/api/cs");curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");struct curl_slist *headers = NULL;headers = curl_slist_append(headers, "Content-Type: multipart/form-data");curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);curl_mime *mime;curl_mimepart *part;mime = curl_mime_init(curl);part = curl_mime_addpart(mime);curl_mime_name(part, "id");curl_mime_data(part, "", CURL_ZERO_TERMINATED);part = curl_mime_addpart(mime);curl_mime_name(part, "name");curl_mime_data(part, "", CURL_ZERO_TERMINATED);curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime);// recv_responsecurl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write);curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data);res = curl_easy_perform(curl);curl_mime_free(mime);}curl_easy_cleanup(curl);QByteArray byte = QByteArray::fromStdString(data);QJsonDocument doc = QJsonDocument::fromJson(byte);qDebug() << doc;qDebug() << doc.object().value("id").toString();
}

参考链接:
libcurl 文件下载demo:https://blog.51cto.com/u_16213673/13733484
Apifox 新手快速上手:https://blog.csdn.net/c8899y/article/details/140907072
Apifox Mock 功能全解析:https://apifox.com/help/articles/apifox-mock/
Apifox 和 Apipost: API工具的成本考量:https://zhuanlan.zhihu.com/p/27127854818
掌握 Postman Mock server 的实用技巧:https://zhuanlan.zhihu.com/p/696581669
使用postman搭建mock服务 :https://www.cnblogs.com/wx170119/p/12512507.html
libcurl编译与基本使用:https://blog.csdn.net/zwcslj/article/details/140265313

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95202.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python语法基础学习笔记】竞赛常用标准库

前言此系列笔记是拨珠自己的学习笔记&#xff0c;自用为主&#xff0c;学习建议移步其他大佬的专门教程。math库Python 的 math 库是标准库之一&#xff0c;提供了大量数学运算相关的函数&#xff0c;适用于基础数学计算、科学计算等场景。下面详细介绍其使用方法及常用功能&am…

我的项目我做主:Focalboard+cpolar让团队协作摆脱平台依赖

文章目录前言1. 使用Docker本地部署Focalboard1.1 在Windows中安装 Docker1.2 使用Docker部署Focalboard2. 安装Cpolar内网穿透工具3. 实现公网访问Focalboard4. 固定Focalboard公网地址前言 “项目管理软件又涨价了&#xff01;“小团队负责人小林发愁——刚习惯操作逻辑&…

【3D 入门-4】trimesh 极速上手之 3D Mesh 数据结构解析(Vertices / Faces)

【3D入门-指标篇上】3D 网格重建评估指标详解与通俗比喻【3D入门-指标篇下】 3D重建评估指标对比-附实现代码【3D 入门-3】常见 3D 格式对比&#xff0c;.glb / .obj / .stl / .ply Mesh 数据结构解析 1. Vertices&#xff08;顶点&#xff09; original_vertices mesh_ful…

无需服务器,免费、快捷的一键部署前端 vue React代码--PinMe

作为前端的开发&#xff0c;有时候想部署一个项目真的是很“受气”&#xff0c;要不就是找运维&#xff0c;或者后端&#xff0c;看别人的时间&#xff0c;或者走流程。 现在&#xff0c;有这么一个神器PinMe&#xff0c; 以前部署项目&#xff1a;自己买服务器?域名、 SSL、N…

【LeetCode_26】删除有序数组中的重复项

刷爆LeetCode系列LeetCode26题&#xff1a;github地址前言题目描述题目与思路分析代码实现算法代码优化LeetCode26题&#xff1a; github地址 有梦想的电信狗 前言 本文介绍用C实现leetCode第26题题目链接&#xff1a;https://leetcode-cn.com/problems/remove-duplicates-…

CMake构建学习笔记23-SQLite库的构建

1. 构建思路 在前文中构建了大量的库包程序&#xff08;参看CMake构建学习笔记-目录&#xff09;之后&#xff0c;可以总结一下在Windows下使用脚本构建程序的办法&#xff1a; 使用CMake构建。这是目前最通用最流行的构建方式&#xff0c;大部分C/C程序都在逐渐向这个方向转…

Watt Toolkit下载安装并加速GitHub

一、下载 官方地址:(Steam++官网) - Watt Toolkit Gitee下载地址:https://gitee.com/rmbgame/SteamTools/releases/tag/3.0.0-rc.16

DevOps运维与开发一体化及Kubernetes运维核心详解

前言&#xff1a; 在云原生时代&#xff0c;技术的融合与流程的重构已成为驱动业务创新的核心引擎。Kubernetes作为容器编排的事实标准&#xff0c;其稳定的运维能力是业务应用的基石&#xff1b;而DevOps所倡导的开发与运维一体化文化&#xff0c;则是实现快速交付和价值流动的…

HQX SELinux 权限问题分析与解决

Google自Android 5.0起强制实施的SELinux安全子系统&#xff0c;通过最小权限原则显著提升了系统安全性&#xff0c;但这也导致开发过程中频繁出现权限拒绝问题。值得注意的是&#xff0c;即便设备已获取root权限&#xff0c;SELinux的强制访问控制机制仍会限制部分敏感操作。 …

SpringBoot集成Kafka实战应用

目录 使用Kafka-Client实现消息收发 引入依赖 发送端&#xff1a; 消费端&#xff1a; SpringBoot集成 引入maven依赖 消费端 在上一篇我们深度解析了Kafka的运行操作原理以及集群消息消费机制等&#xff0c;请点击下方链接获取 Kafka消息队列深度解析与实战指南 本篇我…

单元测试总结2

1、重载和重写的区别01、定义不同&#xff1a;重载是在同一个类中定义多个方法名相同但参数列表不同的方法&#xff1b;重写是子类对父类中同名同参数列表的方法进行重新实现02、范围不同&#xff1a;重载发生在同一个类中&#xff0c;重写发生在子类和父类中03、参数要求不同&…

Wi-Fi技术——MAC特性

有线和无线网络在数据链路层的特性存在差异&#xff0c;具体为&#xff1a; CSMA/CD 用于有线网络&#xff0c;通过检测和处理冲突来维持网络的稳定性。CSMA/CA 用于无线网络&#xff0c;强调冲突的预防&#xff0c;以应对无线信道共享的挑战 1 有线网 CSMA/CD 有线网 CSMA/…

OpenHarmony 分布式感知中枢深度拆解:MSDP 框架从 0 到 1 的实战指南

MSDP设备状态感知框架技术开发文档 1. 系统概述 1.1 框架定位 MSDP (Multi-Sensor Data Processing) 设备状态感知框架是OpenHarmony系统中负责设备状态识别和分发的核心服务,基于多传感器融合技术,为系统应用提供设备状态感知能力。 1.2 核心功能 静止状态识别:基于加速…

图像 OSD层数据 显示--OSD LOGO单色黑色显示,按区域大小申请MMZ内存的优缺点分析

在监控摄像机、嵌入式显示设备等场景中,OSD(On-Screen Display,屏幕显示)LOGO 常需单色黑色显示,且按区域大小申请 MMZ(Multi-Media Zone,多媒体专用内存)内存,该方案的优缺点需结合硬件资源、显示效率、功能适配性等维度综合分析,具体如下: 一、核心优势:针对性优…

徐真妍最新杂志封面大片曝光,探索镜头下的多面魅力

近日&#xff0c;青年演员徐真妍拍摄的一组大片正式曝光。这组以 “森林系” 为主题的大片&#xff0c;登上时尚杂志《慵懒LAZY DAYS》8-9月刊封面。融合了优雅与现代先锋感&#xff0c;展现了徐真妍甜美温婉的表现力。镜头前的她&#xff0c;在多种风格间自如切换&#xff0c;…

广度优先搜索(BFS, Breadth-First Search)

好的&#xff0c;我给你讲 广度优先搜索&#xff08;BFS, Breadth-First Search&#xff09;&#xff0c;并配一个直观例子。1️⃣ 什么是广度优先广度优先搜索的特点&#xff1a;按层访问&#xff1a;先访问根节点&#xff0c;然后访问它的直接子节点&#xff0c;再访问子节点…

GD32入门到实战22--红外NEC通信协议

ir_drv.c红外传输协议地位在前&#xff0c;所以我们可以这样保存数据到数组假使接收到1就>>1再|0x80&#xff0c;如果接收到0就>>1新建红外驱动层代码ir_drv.c#include <stdio.h> #include "gd32f30x.h" #include <stdbool.h> static voi…

zkML-JOLT——更快的ZK隐私机器学习:Sumcheck +Lookup

1. 引言 ICME团队开源的zkML项目&#xff1a; https://github.com/ICME-Lab/jolt-atlas&#xff08;Rust&#xff09; zkML-JOLT&#xff08;JOLT ‘Atlas’&#xff09;构建在a16z Crypto团队的JOLT研究和实现基础上&#xff0c;其性能比其他zkML项目快了3到7倍。 a16z Cr…

【大模型记忆-Mem0详解-2】系统架构

概述 Mem0 实现了双架构系统&#xff0c;通过两种主要部署模型为 AI 应用提供智能内存能力&#xff1a; 托管平台 &#xff1a;通过 MemoryClient 和 AsyncMemoryClient 类访问的托管服务开源 &#xff1a;以 Memory 类为中心的自托管组件&#xff0c;具有可插拔提供程序 此架构…

[Java]PTA:jmu-Java-01入门-取数字浮点数

本题目要求读入若干以回车结束的字符串表示的整数或者浮点数&#xff0c;然后将每个数中的所有数字全部加总求和。输入格式:每行一个整数或者浮点数。保证在浮点数范围内。输出格式:整数或者浮点数中的数字之和。题目保证和在整型范围内。输入样例:-123.01 234输出样例:7 9代码…