当前位置: 首页 > news >正文

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.dtcms.com/a/360092.html

相关文章:

  • 没有广告,纯净好用,功能强大的本地和网络文件管理器
  • 2025年9月计算机二级C++语言程序设计——选择题打卡Day12
  • RocketMQ5.0+保姆级单点Docker部署教程
  • 从零构建中间件:Tower 核心设计的来龙去脉
  • 当代科学(范畴大辩论) 的学科分科(论据)的要素论(论点)及方法论(论证):边缘处理
  • return 语句使用指南(c++)
  • 基于 YOLOv11n 的无人机航拍小目标检测算法学习
  • shell脚本第六阶段---三剑客之sed
  • Spring Cloud Alibaba Seata 分布式事务(六)
  • CPTS---Hospital
  • AliceVision相比于OpenMVG、Colmap有什么区别和特点
  • 计算机毕设选题:基于Python+Django实现电商评论情感分析系统
  • 嵌入式ARM程序高级调试技能:20.qemu arm ARM Linux 上 addr2line 的实际应用示例
  • 常用定位技术对比解析
  • OpenCL C 命令队列
  • 点接触混合润滑完整数值解
  • Photoshop - Ps 标尺
  • PortSwigger靶场之DOM XSS in document.write sink using source location.search通关秘籍
  • [ Android Audio 篇 ] 高通平台 Android AudioRecord 多通道录音
  • 手写call函数【JavaScript】
  • Java多线程基础:进程、线程与线程安全实战
  • 《信息学奥林匹克辞典》中的一个谬误
  • 【Android】Notification 的基本使用
  • C++ 快速复习指南(上半部分)
  • 房屋租赁系统|基于SpringBoot和Vue的房屋租赁系统(源码+数据库+文档)
  • 8.31【Q】CXL-DMSim:
  • 数学分析原理答案——第七章 习题12
  • 设置Ubuntu 22.04 LTS上的rsync同步服务
  • Hysplit大气传输和污染扩散-轨迹聚合标准20%30%用途
  • 国内大型银行数据模型实践案例