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

使用libcurl请求https的get/post

最近有个需求,需要用c++请求下我自己的服务器,周末看了一下怎么发起http请求。
官方文档见:

https://curl.se/libcurl/c/example.html

官网的demo是基于c的,我用的时候报错了。下面是我写的get/post的方法,同步执行。

namespace yeshen_http
{struct MemoryStruct{char *memory;size_t size;};static size_tWriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp){size_t realsize = size * nmemb;struct MemoryStruct *mem = (struct MemoryStruct *)userp;void *ptr = realloc(mem->memory, mem->size + realsize + 1);if (!ptr){std::cout << "not enough memory (realloc returned NULL)" << std::endl;return 0;}mem->memory = (char *)ptr;memcpy(&(mem->memory[mem->size]), contents, realsize);mem->size += realsize;mem->memory[mem->size] = 0;return realsize;}static const char *get_url = "https://yeshen.org";
}int HTTP::get(const char *url, std::string &response)
{CURL *curl = curl_easy_init();struct yeshen_http::MemoryStruct chunk;chunk.memory = (char *)malloc(1);chunk.size = 0;if (curl){curl_easy_setopt(curl, CURLOPT_URL, url);curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, yeshen_http::WriteMemoryCallback);curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);CURLcode res = curl_easy_perform(curl);int retCode = -1;if (res != CURLE_OK){std::cerr << "curl_easy_perform() failed:" << curl << curl_easy_strerror(res) << std::endl;}else if (chunk.size == 0){std::cout << (unsigned long)chunk.size << " bytes retrieved" << std::endl;}else{std::cout << (unsigned long)chunk.size << " bytes retrieved" << std::endl;response = chunk.memory;retCode = 0;}free(chunk.memory);curl_easy_cleanup(curl);return retCode;}return -1;
}int HTTP::post(const char *url, const std::string &data)
{CURL *curl = curl_easy_init();if (curl){const char *data_str = data.c_str();curl_easy_setopt(curl, CURLOPT_URL, url);curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data_str);curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(data_str));CURLcode res = curl_easy_perform(curl);if (res != CURLE_OK){std::cerr << "curl_easy_perform() failed:" << curl_easy_strerror(res) << std::endl;return -1;}curl_easy_cleanup(curl);return 0;}return -1;
}

cmake部分的处理

target_link_libraries(${YESHEN_TARGET_NAME} PRIVATE libcurl.so
)

相关文章:

使用libcurl请求https的get/post

最近有个需求&#xff0c;需要用c请求下我自己的服务器&#xff0c;周末看了一下怎么发起http请求。 官方文档见&#xff1a; https://curl.se/libcurl/c/example.html 官网的demo是基于c的&#xff0c;我用的时候报错了。下面是我写的get/post的方法&#xff0c;同步执行。 n…...

AUTOSAR规范与ECU软件开发(实践篇)7.3 MCAL模块配置方法及常用接口函数介绍之GPT的配置

目录 1、前言 2 、Gpt模块 (1) Gpt General配置 (2) GptChannelConfigSet配置 (3) GptClockReferencePonit配置...

Android 性能优化--内存优化分析总结

一、内存优化概念 1.1 为什么要做内存优化&#xff1f; 内存优化一直是一个很重要但却缺乏关注的点&#xff0c;内存作为程序运行最重要的资源之一&#xff0c;需要运行过程中做到合理的资源分配与回收&#xff0c;不合理的内存占用轻则使得用户应用程序运行卡顿、ANR、黑屏&…...

buuctf web 前5题

目录 一、[极客大挑战 2019]EasySQL 总结&#xff1a; 二、[极客大挑战 2019]Havefun 总结&#xff1a; 三、[HCTF 2018]WarmUp 总论&#xff1a; 四、[ACTF2020 新生赛]Include 总结&#xff1a; 五、[ACTF2020 新生赛]Exec 总结&#xff1a; 一、[极客大挑战 2019]…...

stable diffusion实践操作-提示词-人物服饰

系列文章目录 stable diffusion实践操作-提示词 文章目录 系列文章目录前言一、提示词汇总1.1 人物服饰11.2 人物服饰2 前言 本文主要收纳总结了提示词-人物服饰。 一、提示词汇总 1.1 人物服饰1 耳饰帽子内裤内衣上身饰品手部[月牙耳环][头顶光环][丁字裤][胸罩][披风][太…...

Tomcat加载静态资源--防止SpringMVC拦截

最简洁方式&#xff1a;使用API 在配置文件下写配置类SpringMvcSupport&#xff0c;并且让SpringMVC扫描到此文件夹ComponentScan({"com.itheima.controller","com.itheima.config"}) SpringMvcSupport配置类如下 Configuration public class SpringMvcS…...

【AI数字人】如何基于ER-NeRF自训练AI数字人

文章目录 环境配置前期准备数据预处理音频预处理训练bug测试度量标准用指定的声音进行推理参考ER-NeRF,能够以更小的模型尺寸和更快的速度训练合成逼真的3D talking portrait。 环境配置 ER-NeRF项目开源于两个月前,相比于两年前的AD-NeRF,使用更新版本的tensorflow和各种…...

多目标应用:基于多目标哈里斯鹰优化算法(MOHHO)的微电网多目标优化调度研究MATLAB

一、微网系统运行优化模型 参考文献&#xff1a; [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、多目标哈里斯鹰优化算法MOHHO 多目标哈里斯鹰优化算法&#xff08;Multi-Objective Harris Hawks Optimizer&#…...

[运维|中间件] 东方通TongWeb忘记密码后修改密码

参考文献 Tongweb忘记密码处理办法 修改密码 以下步骤将thanos用户密码修改为 thanos123.com 编辑twusers.properties文件 vim /path/to/TongWeb7.0/conf/security/twusers.properties将thanos的内容修改为默认的密码信息&#xff1a; thanos3d6391e41e9c4319$3$6774c6fc9…...

无涯教程-Android Mock Test函数

本节介绍了与 Android 相关的各种模拟测试。您可以在本地计算机上下载这些样本模拟测试,并在方便时离线解决。每个模拟测试均随附一个模拟测试键,可让您验证最终分数并为自己评分。 Mock Test I Mock Test II Mock Test III Mock Test IV Q 1 -什么是Android&#xff1f; A -A…...

保留网络[02/3]:大型语言模型转换器的继任者”

一、说明 在这项工作中&#xff0c;我们提出保留网络&#xff08;RETNET&#xff09;作为基础架构大型语言模型的结构&#xff0c;同时实现训练并行&#xff0c; 推理成本低&#xff0c;性能好。我们从理论上推导出这种联系 复发与关注之间。然后我们提出保留机制 序列建模&…...

微信小程序-生成canvas图片并保存到手机相册

wxml页面 <button class"rightbtn bottomBtnCss" catch:tap"canvasImg"><image src{{imgUrl}}/images/mine/jspj-icon.png class"restNumImg"></image><text class"btnText">生成图片</text></but…...

设计模式8:代理模式-动态代理

上一篇&#xff1a;设计模式8&#xff1a;代理模式-静态代理 目录 如何理解“动态”这两个字&#xff1f;动态代理简单的代码实例一个InvocationHandler代理多个接口有动态代理&#xff0c;为什么还要用Cglib代理&#xff1f; 如何理解“动态”这两个字&#xff1f; “动态”…...

tcp字节传输(java)-自定义包头和数据识别

1、背景 tcp传输的时候会自动拆包&#xff0c;因此服务端接收的数据段可能跟客户端发送过来的数据段长度不一致&#xff0c;比如客户端一次发送10000个字节。但是服务端接收了两次才接收完整&#xff08;例如第一次接收6000字节&#xff0c;第二次接收4000字节&#xff09;。但…...

pyspark 系统找不到指定的路径; \Java\jdk1.8.0_172\bin\java

使用用具PyCharm 2023.2.1 1&#xff1a;pyspark 系统找不到指定的路径&#xff0c; Java not found and JAVA_HOME environment variable is not set. Install Java and set JAVA_HOME to point to the Java installation directory. 解决方法&#xff1a;配置正确环境变量…...

UE4 Physics Constraint Actor 实现钟摆效果

放入场景&#xff0c;然后将一个球体放入场景 选择小球 将小球改为Movable 选择模拟物理&#xff0c;并将小球移除平衡点 就实现了...

UE4/UE5 动画控制

工程下载​ ​​​​​​​​​​​​​https://mbd.pub/o/bread/ZJ2cm5pu 蓝图控制sequence播放/倒播动画&#xff1a; 设置开启鼠标指针&#xff0c;开启鼠标事件 在场景中进行过场动画制作 设置控制事件...

Springboot整合shiro

导入依赖 <!-- 引入springboot的web项目的依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> ​ <!-- shiro --><depende…...

阻塞/非阻塞、同步/异步(网络IO)

1.阻塞/非阻塞、同步/异步(网络IO) 【思考】典型的一次 IO 的两个阶段是什么&#xff1f; 数据就绪 和 数据读写 数据就绪 &#xff1a;根据系统 IO 操作的就绪状态 阻塞 非阻塞 数据读写 &#xff1a;根据应用程序和内核的交互方式 同步 异步 陈硕&#xff1a;在处理 IO …...

为什么大家会觉得考PMP没用?

一是在于PMP这套知识体系&#xff0c;是一套底层的项目管理逻辑框架&#xff0c;整体是比较抽象的。大家在学习工作之后&#xff0c;会有人告诉你很多职场的一些做事的规则&#xff0c;比如说对于沟通&#xff0c;有人就会告诉如何跟客户沟通跟同事相处等等&#xff0c;这其实就…...

AVR128单片机 USART通信控制发光二极管显示

一、系统方案 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 void port_init(void) { PORTA 0xFF; DDRA 0x00;//输入 PORTB 0xFF;//低电平 DDRB 0x00;//输入 PORTC 0xFF;//低电平 DDRC 0xFF;//输出 PORTE 0xFF; DDRE 0xfE;//输出 PO…...

为什么5G 要分离 CU 和DU?(4G分离RRU 和BBU)

在 Blog 一文中&#xff0c;5G--BBU RRU 如何演化到 CU DU&#xff1f;_5g rru_qq_38480311的博客-CSDN博客 解释了4G的RRU BBU 以及 5G CU DU AAU&#xff0c;主要是讲了它们分别是什么。但是没有讲清楚 为什么&#xff0c;此篇主要回答why。 4G 为什么分离基站为 RRU 和 BBU…...

Python中的数据输入

获取键盘输入 input语句 使用input()可以从键盘获取输入&#xff0c;使用一个变量来接收 print("你是谁&#xff1f;") name input() print(f"我知道了&#xff0c;你是{name}")# print("你是谁&#xff1f;") name input("你是谁&…...

cms系统稳定性压力测试出现TPS抖动和毛刺的性能bug【杭州多测师_王sir】

一、并发线程数100&#xff0c;分10个阶梯&#xff0c;60秒加载时间&#xff0c;运行1小时进行压测&#xff0c;到10分钟就出现如下 二、通过jstat -gcutil 16689 1000进行监控...

【UE】材质描边、外发光、轮廓线

原教学视频链接&#xff1a; ue4 材质描边、外发光、轮廓线_哔哩哔哩_bilibili 步骤 1. 首先新建一个材质&#xff0c;这里命名为“Mat_outLine” 在此基础上创建一个材质实例 2. 在视口中添加一个后期处理体积 设置后期处理体积为无限范围 点击添加一个数组 选择“资产引用”…...

百模大战,打响AI应用生态的新赛点

点击关注 文&#xff5c;郝鑫 黄小艺&#xff0c;编&#xff5c;刘雨琦 “宇宙中心”五道口&#xff0c;又泛起了昔日的光芒。 十字路口一角的华清嘉园里&#xff0c;各种互联网大佬们&#xff0c;王兴、程一笑、张一鸣等人的创业传说似乎还有余音&#xff0c;后脚搬进来的AI…...

【C++二叉树】进阶OJ题

【C二叉树】进阶OJ题 目录 【C二叉树】进阶OJ题1.二叉树的层序遍历II示例代码解题思路 2.二叉搜索树与双向链表示例代码解题思路 3.从前序与中序遍历序列构造二叉树示例代码解题思路 4.从中序与后序遍历序列构造二叉树示例代码解题思路 5.二叉树的前序遍历&#xff08;非递归迭…...

C++——vector:resize与reserve的区别,验证写入4GB大数据时相比原生操作的效率提升

resize和reserve的区别 reserve&#xff1a;预留空间&#xff0c;但不实例化元素对象。所以在没有添加新的对象之前&#xff0c;不能引用容器内的元素。而要通过调用push_back或者insert。 resize&#xff1a;改变容器元素的数量&#xff0c;且会实例化对象&#xff08;指定或…...

基础配置xml

# 配置端口 server.port8081# 文件上传配置 # 是否支持文件上传 spring.servlet.multipart.enabledtrue # 是否支持文件写入磁盘 spring.servlet.multipart.file-size-threshold0 # 上传文件的临时目录 spring.servlet.multipart.locationd:/opt/tmp # 最大支持上传文件大小 sp…...

win环境安装SuperMap iserver和配置许可

SuperMap iServer是我国北京超图公司研发的基于跨平台GIS内核的云GIS应用服务器产品&#xff0c;通过服务的方式&#xff0c;面向网络客户端提供与专业GIS桌面产品相同功能的GIS服务&#xff0c;能够管理、发布多源服务&#xff0c;包括REST服务、OGC服务等。 SuperMap iserve…...

站长推荐/互联网营销的方式有哪些

1.将分区信息写到硬盘的第一个设备节点的MBR结构中的分区表&#xff1b;2.格式化分区到指定的文件系统类型。MBR中存放分区表的位置在446-509&#xff0c;占用了64字节&#xff0c;MBR结构只支持4个主分区&#xff0c;所以有4个16字节的区域&#xff0c;先简要说明一下MBR的分区…...

做网站利润/优秀网页设计公司

前言微软今年推出了新版的 Microsoft Edge 浏览器&#xff0c;与原本 Win10 内置的 UWP 版完全不同。新版 Edge 和 Chrome 一样基于开源项目 Chromium&#xff0c;性能上应该是没问题的。虽然还没有发布正式版&#xff0c;但稳定测试版 Beta Channel 已经可以下载了。这几天我安…...

软件外包属于什么行业/seo常用分析的专业工具

前言 本教程写了这个效果图的demo&#xff0c;同时总结CABasicAnimation的使用方法。 看完gif动画完&#xff0c;看到了什么&#xff1f;平移、旋转、缩放、闪烁、路径动画。 实现平移动画 实现平移动画&#xff0c;我们可以通过transform.translation或者水平transform.transl…...

有专门做dnf工作室的网站么/搜索引擎优化分析

对dictObject list进行排序 dict [{x: 1, y:3}&#xff0c; {x: 2, y:4}] * x 的值大于2优先排 * y 按照从小到大顺序排列 for d in dict:d.is_x_more_than_two True if d.x >2 else False dict.sort(key: lambda d: (not d.is_x_more_than_two, d.y)) * x 的值大于2优先排…...

佛山哪里有做网站的/基本营销策略有哪些

当快船手握16分领先进入易地再战时&#xff0c;老李充满了欢欣与愉悦&#xff0c;甚至还想哼个小曲儿。毕竟赫拉克利特曾说过&#xff1a;一个人不可能两次踏进同一条河流。G5已经被掘金翻了一回&#xff0c;难不成还想再玩逆转&#xff1f;得亏老李不是五五开&#xff0c;否则…...

centos7.2 wordpress/北京营销型网站

2022/2/18 今天看到了一个很好的博客&#xff1a;https://wudan.blog.csdn.net/article/details/121909047?spm1001.2014.3001.5502 有关于promise的&#xff0c;我自己去尝试写接口试试 就是说resolve(subList) 那么res就是subList啊。没有res.subList vue 每隔几秒刷新请求…...