静态curl库编译与使用(c++)
静态curl库编译与使用
静态curl库编译与使用:mingw https://curl.se/windows/
// 测试:设置URL地址
// curl_easy_setopt(curlHandle, CURLOPT_URL, “https://ipinfo.io/json”);
// curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYPEER, 0L);
// curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYHOST, 0L);
#include <iostream>#include <chrono>
#include <iomanip>
#include <sstream>std::string log_time()
{time_t t = time(nullptr);char tmp[25]{};struct tm* timinfo = localtime(&t);strftime(tmp, sizeof(tmp), "%Y-%m-%dT%H:%M:%S", timinfo);return tmp;
}#include <curl/curl.h>
#pragma comment(lib, "libbrotlicommon.a")
#pragma comment(lib, "libbrotlidec.a")
#pragma comment(lib, "libcrypto.a")#pragma comment(lib, "libcurl.a")
#pragma comment(lib, "libnghttp2.a")
#pragma comment(lib, "libnghttp3.a")
#pragma comment(lib, "libngtcp2.a")
#pragma comment(lib, "libngtcp2_crypto_quictls.a")
#pragma comment(lib, "libpsl.a")
#pragma comment(lib, "libssh2.a")
#pragma comment(lib, "libssl.a")
#pragma comment(lib, "libz.a")
#pragma comment(lib, "libzstd.a")#pragma comment(lib, "libmingwex.a")
#pragma comment(lib, "libgcc.a")#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wldap32.lib")
#pragma comment(lib, "bcrypt.lib")
#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "advapi32.lib")
#pragma comment(lib, "crypt32.lib")
#pragma comment(lib, "Normaliz.lib")
#pragma comment(lib, "legacy_stdio_definitions.lib")#include <iostream>
#include <string>// 定义回调函数,用于处理收到的响应数据
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* response) {size_t totalSize = size * nmemb;response->append((char*)contents, totalSize);return totalSize;
}int main() {CURL* curlHandle;CURLcode res;// 初始化Curlcurl_global_init(CURL_GLOBAL_DEFAULT);// 创建Curl会话curlHandle = curl_easy_init();if (curlHandle == nullptr) {std::cout << "Failed to create a new CURL handle." << std::endl;return -1;}try {// 设置URL地址curl_easy_setopt(curlHandle, CURLOPT_URL, "https://ipinfo.io/json");curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYPEER, 0L);curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYHOST, 0L);//curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYPEER, 1L);//winssl编译时使用windows自带的根证书//curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYHOST, 2L);//curl_easy_setopt(curlHandle, CURLOPT_MAXREDIRS, 5);//curl_easy_setopt(curlHandle, CURLOPT_FOLLOWLOCATION, 1);//curl_easy_setopt(curlHandle, CURLOPT_NOSIGNAL, 1L);//curl_easy_setopt(curlHandle, CURLOPT_AUTOREFERER, 1L);//curl_easy_setopt(curlHandle, CURLOPT_POST, false);//curl_easy_setopt(curlHandle, CURLOPT_FAILONERROR, 1L);//curl_easy_setopt(curlHandle, CURLOPT_CONNECTTIMEOUT, 30L);//curl_easy_setopt(curlHandle, CURLOPT_LOW_SPEED_TIME, 60L);//curl_easy_setopt(curlHandle, CURLOPT_LOW_SPEED_LIMIT, 30L);// 设置写入回调函数std::string responseData;curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, WriteCallback);curl_easy_setopt(curlHandle, CURLOPT_WRITEDATA, &responseData);// 发送GET请求res = curl_easy_perform(curlHandle);if (res != CURLE_OK) {std::cerr << "Error occurred while sending request: " << curl_easy_strerror(res) << std::endl;throw - 1;}else {// 打印响应结果std::cout << "Response data:\n" << responseData << std::endl;}}catch (...) {// 错误处理std::cerr << "An error occurred during the process." << std::endl;return -1;}// 清理资源curl_easy_cleanup(curlHandle);curl_global_cleanup();return 0;
}
相关文章:
静态curl库编译与使用(c++)
静态curl库编译与使用 静态curl库编译与使用:mingw https://curl.se/windows/ // 测试:设置URL地址 // curl_easy_setopt(curlHandle, CURLOPT_URL, “https://ipinfo.io/json”); // curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYPEER, 0L); // c…...
element 表单提交图片(表单上传图片)
文章目录 使用场景页面效果前端代码 使用场景 vue2 element 表单提交图片 1.点击【上传图片】按钮择本地图片(只能选择一张图片)后。 2.点击图片,支持放大查看。 3.点击【保存】按钮,提交表单。 页面效果 前端代码…...
Android 15 第一个开发者预览版
点击查看:first-developer-preview-android15 点击查看:Get Android 15 2024年2月16日,谷歌发布 Android 15 第一个开发者预览版 翻译 由工程副总裁戴夫伯克发布 今天,我们发布了Android 15的首个开发者预览版,这样我们的开发者就…...
anomalib1.0学习纪实-续1:增加新算法
0、基本信息 现在我要增加一个新算法:DDAD 他的代码,可以在github中找到:GitHub - arimousa/DDAD 一、基础操作: 1、修改anomalib\src\anomalib\models\__init__.py 我增加的第33行和61行, 2、 增加ddad文件夹和文…...
Java+Vue+MySQL,国产动漫网站全栈升级
✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...
机器人常用传感器分类及一般性要求
机器人传感器的分类 传感技术是先进机器人的三大要素(感知、决策和动作)之一。根据用途不同,机器人传感器可以分为两大类:用于检测机器人自身状态的内部传感器和用于检测机器人相关环境参数的外部传感器。 内部传感器 内部传感…...
C++-opencv的imread、imshow、waitkey、namedWindow
在C中使用OpenCV时,imread和imshow是两个非常基础且常用的函数,用于读取图像和显示图像。以下是这两个函数的简要说明和如何一起使用它们的示例。 imread函数 imread用于从指定的文件路径读取图像。它将图像读入为cv::Mat对象,这是OpenCV中…...
开源语音识别faster-whisper部署教程
1. 资源下载 源码地址 模型下载地址: large-v3模型:https://huggingface.co/Systran/faster-whisper-large-v3/tree/main large-v2模型:https://huggingface.co/guillaumekln/faster-whisper-large-v2/tree/main large-v2模型:…...
使用IntelliJ IDEA配置Maven (入门)
在使用IntelliJ IDEA进行Java开发时,配置Maven是至关重要的一步,因为它可以帮助你管理项目的依赖和构建过程。以下是我在使用IntelliJ IDEA配置Maven的实践过程,以及一些技术笔记和职场感悟。 工作实践与项目复盘 下载Maven: 访问…...
汽车金融市场研究:预计2029年将达到482亿美元
汽车金融公司作为汽车流通产业链的重要一环,认真贯彻落实国家有关政策,采取多种措施助力汽车产业发展,为促进推动汽车消费、助力畅通汽车产业链、支持稳定宏观经济大盘发挥了积极作用。 益于国内疫情得到有效控制,我国经济持续稳定…...
关于举办第十五届蓝桥杯大赛电子赛5G全网规划与建设赛项的通知
关于举办第十五届蓝桥杯大赛电子赛 5G全网规划与建设赛项的通知 各相关院校: 第十五届蓝桥杯大赛通知已于2023年9月27日在蓝桥杯大赛官网发布,现就电子赛5G全网规划与建设赛项报名事宜,公布如下: 一、赛项概述 5G全网规划与建设…...
Vue3快速上手(七) ref和reactive对比
一、ref和reactive对比 表格形式更加直观吧: 项目refreactive是否支持基本类型支持不支持是否支持对象类型支持支持对象类型是否支持属性直接赋值不支持,需要.value支持是否支持直接重新分配对象支持,因为操作的.value不支持,需…...
8、内网安全-横向移动RDPKerberos攻击SPN扫描WinRMWinRS
用途:个人学习笔记,有所借鉴,欢迎指正 目录 一、域横向移动-RDP-明文&NTLM 1.探针服务: 2.探针连接: 3.连接执行: 二、域横向移动-WinRM&WinRS-明文&NTLM 1.探针可用: 2.连接…...
《数据结构与算法之美》读书笔记
《数据结构与算法之美》读书笔记 写在前面 这本书的大部分内容比较浅显,因此只挑DSAA课程上没有涉及或没有深入讨论的点总结 第二章 数组相关 提高传统数组插入/删除数据效率的方法: 如果插入的数据不要求有序,可以直接把某位的原数据替换…...
C语言—字符数组(3)
可能不是那么的完整,先凑合看吧,如果我学会如何修改以后,我慢慢回来修改的 1.编写程序实现对两个字符串的连接功能; 法一:不使用strcat函数,写程序直接实现,记得添加结束符,不然程序访问数组时候将变得不…...
linux 实用技能
1.查看系统版本 cat /etc/redhat-release cat /etc/redhat-release 2. 查看磁盘实用情况 df du 3.查看内存 top -Hp 2214 4. 网络配置 vi /etc/hostname vi /etc/hosts vi /etc/sysconfig/network-scripts/ifcfgens33 6. sed ‘s/a/b/g’ aaa.txt 替换 7. scp …...
【maya 入门笔记】基本视图和拓扑
1. 界面布局 先看基本窗口布局,基本窗口情况如下: 就基本窗口布局的情况来看,某种意义上跟blender更像一点(与3ds max相比)。 那么有朋友就说了,玛格基,那blender最下面的时间轴哪里去了&…...
IO 流分类
一、File File 类(磁盘操作)可以用于表示文件和目录的信息,但是它不表示文件的内容。递归地列出一个目录下所有文件: public static void listAllFiles(File dir) {if (dir null || !dir.exists()) {return;}if (dir.isFile())…...
JVM的主要组成部分,以及它们的作用。JVM中的内存区域有哪些,它们各自的作用是什么?什么是Java的堆内存,它如何影响程序的性能?
JVM的主要组成部分,以及它们的作用 JVM(Java虚拟机)的主要组成部分包括类加载器(Class Loader)、运行时数据区(Runtime Data Area)、执行引擎(Execution Engine)、本地库…...
Qt QWidget以及各种控件、布局 核心属性(适合入门使用时查询)
目录 1. QWidget核心属性 2. 按钮类控件 2.1 PushButton 核心属性 2.2 RadioButton 核心属性 2.3 CheckBox 和 Tool Button 核心属性 3. 显示类控件 3.1 Label 核心属性 3.2 LCDNumber 核心属性 3.3 ProgressBar 核心属性 3.4 Calendar Widget 核心属性 4. 输入类控…...
antv-g6实战:自定义拓扑图节点与边的动态交互实现
1. 从零开始认识AntV-G6拓扑图 第一次接触AntV-G6这个可视化引擎时,我正面临一个企业级网络拓扑可视化的项目需求。当时尝试过D3.js和ECharts,发现它们要么太底层,要么对关系型数据支持不够友好。直到遇见G6,才发现这就是为拓扑图…...
IDEA里JProfiler插件怎么配?手把手教你分析Spring Boot内存泄漏(附OOM复现技巧)
IDEA集成JProfiler实战:Spring Boot内存泄漏分析与OOM复现技巧 作为Java开发者,你是否经历过这样的场景:线上服务突然崩溃,日志里赫然写着java.lang.OutOfMemoryError,而你却无从下手?本文将带你深入Intell…...
5个步骤掌握B站推流码获取与OBS直播系统搭建:从入门到专业的完整指南
5个步骤掌握B站推流码获取与OBS直播系统搭建:从入门到专业的完整指南 【免费下载链接】bilibili_live_stream_code 用于在准备直播时获取第三方推流码,以便可以绕开哔哩哔哩直播姬,直接在如OBS等软件中进行直播,软件同时提供定义直…...
从‘大胖老师’到‘小学霸’:用动态蒸馏拯救被剪枝‘剪残’的小模型
从‘大胖老师’到‘小学霸’:动态蒸馏如何拯救剪枝后的模型性能 想象一下,你有一位知识渊博的"大胖老师"——一个经过精心训练的大型神经网络模型。为了让它更轻便、更高效,你决定给它"减肥"(结构化剪枝&…...
智能车PID调参实战:从电机到舵机的完整调试指南(附C代码)
智能车PID调参实战:从电机到舵机的完整调试指南(附C代码) 在智能车竞赛和自动化项目中,PID控制算法的调参往往是决定车辆性能的关键环节。无论是电机的转速控制还是舵机的转向精度,都需要通过精细的参数调整来实现快速…...
SDXL 1.0电影级绘图工坊:Python入门教程与基础图像处理
SDXL 1.0电影级绘图工坊:Python入门教程与基础图像处理 1. 引言 你是不是也曾经被那些精美的AI生成图片所吸引,想要自己动手创作却不知道从何开始?今天我们就来聊聊如何用Python快速上手SDXL 1.0这个强大的AI绘图工具。 SDXL 1.0是当前最先…...
Win11网络卡顿?用Wireshark抓包5分钟定位问题(保姆级实战)
Win11网络卡顿?用Wireshark抓包5分钟定位问题(保姆级实战) 最近在玩《英雄联盟》时,每次团战画面都会卡成PPT,Zoom视频会议也经常出现"机器人音效",作为IT工程师的我决定用Wireshark揪出真凶。没…...
手把手教你用FastBlur打造高级感UI:从对话框背景到沉浸式音乐播放器的完整实现
用FastBlur打造高级UI的实战指南:从对话框到音乐播放器的设计进化 毛玻璃效果早已从iOS的视觉语言演变为现代移动应用设计的通用元素。这种半透明模糊效果不仅能提升界面层次感,还能在不分散用户注意力的情况下创造视觉焦点。本文将带你深入Android平台实…...
Ubuntu服务器中文乱码终极解决方案:从locale配置到阿里云重启避坑指南
Ubuntu服务器中文乱码终极解决方案:从locale配置到阿里云重启避坑指南 当你第一次在Ubuntu服务器上看到中文字符变成一堆问号或方框时,那种困惑和挫败感我深有体会。特别是在云服务器环境下,问题往往比本地环境更复杂——即使按照常规教程操作…...
Java 设计模式・策略模式篇:从思想到代码实现
一、行为型模式 在面向对象的世界里,如何优雅地组织对象间的交互、分配职责,是每一位开发者都会反复思考的问题。直接硬编码交互逻辑固然简单,但当业务复杂度上升、对象协作关系变得错综复杂时,这种方式就会让代码变得僵化、难以…...
