C调用HTTP接口(libcurl)_catoop的博客-程序员宅基地

技术标签: 其他  

据不完全了解,C里面默认没有很好的直接调用HTTP接口的支持。

然鹅在互联网开发中,HTTP已经成功最为广泛的一种网络传输协议,很多第三方应用和系统大多都会有HTTP相关接口。HTTP也为各种开发语言之间的交互,互相打开了大门。

针对C如何进行HTTP调用,网上有很多模拟HTTP协议报文手写的。作者认为大可不必,很多时候我们站在巨人的肩膀上可能是更好的选择。

curl 即便不是众所周知,也基本上可以达到耳濡目染了,可能看到它最多的地方就是 Linux 中了,总之这个东西比较完善也很强大。

URL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。
cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。
curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证(Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos)、file transfer resume、proxy tunneling。

curl 一般我们用命令行来操作它,它也提供了 libcurl 库可以让 C 直接进行操作。

综上所述,实现本文标题的工作,在 C 中推荐通过 libcurl 库来进行 HTTP 调用。

还有一个叫 wget 的东西,它是个专职的下载利器,简单,专一,极致;而 curl 也可以下载,但是长项不在于下载,而在于模拟提交web数据,POST/GET请求,调试网页,等等。所以,我们选用 curl 很合适做 HTTP 调用。

推荐 curl 的更大的原因,在我看来,是它的官网提供了详细的 API 指南,以及所有人都喜欢的代码示例(很全),这使我们的 “拿来主义” 变的更省心。

本文不需要提供什么代码示例,作者觉得毫无必要,因为下面给出的官方地址中,已经很全很清晰了,甚至 example.zip 你可以直接下载下来。

在这里插入图片描述
下面是进行 HTTP POST 请求的示例 的截图:

在这里插入图片描述

总之你需要的各种协议请求方式,它基本上都支持了,包括 ftp、scp、telnet 等等,文上对 curl 科普的那一段都枚举了,更多详见官网。


官网地址:https://curl.se/

官网API:https://curl.se/libcurl/c/

官网示例代码:https://curl.se/libcurl/c/example.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/catoop/article/details/114916406

智能推荐

相分离相关文章阅读Liquid–liquid phase separation in cellular signaling systems_nephrin nck n-wasp_forever luckness 的博客-程序员宅基地

Liquid–liquid phase separation in cellular signaling systemsRNA和蛋白质的液液相分离现在被认为是RNP颗粒形成的一个重要的机制,细胞信号似乎也采用相分离的方式在细胞质或者细胞膜进行进行扩增或者信号转导的调控,在30年前就已经确认的受体聚集事件,现在又可以从相分离的角度进行新的审视。固有失序蛋白质或区域对于动态的蛋白质互作或者转录后的..._nephrin nck n-wasp

有手就行的移动平均法、指数平滑法的Excel操作,用来时间序列预测_指数平滑法excel操作_严同学正在努力的博客-程序员宅基地

有手就行的移动平均法、平滑指数在Excel中的操作,可以用来简单的时间序列预测。_指数平滑法excel操作

Python网络爬虫-正则表达式-转义字符和原生字符串_python3原生字符串_那个雨季的博客-程序员宅基地

往下看:150讲课程内容花2分钟了解下~ 重点:通过爬虫进阶的知识点我们能应对大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度! 你将收获~~ 1、面向企业实际需求,为零基础从入门到进阶中级python爬虫工程打造。 2、从网络抓包开始讲起,到网..._python3原生字符串

html div高度 满屏幕,div百分百占满屏幕的两种css写法-程序员宅基地

很多人都知道,div容器在一般情况下即使设置高为100%也不会真的占满屏幕(浏览器窗口高度),那么究竟有没有办法用样式实现100%屏高呢?答案是肯定的。今天益吾库就来分享一下div百分百占满屏幕的两种css写法,一种是绝对定位方法,另一种是根容器百分比方法,具体实例代码如下:绝对定位方法:*{padding:0;margin:0;}#myDiv{width:100%;height:100..._html高度占满屏幕

Ansible自动化运维之Ansible入门及简单部署_三台操作系统上部署三台操作系统上部署ansible,并控制端在客户端上创建文件控_Tuki_a的博客-程序员宅基地

AnsibleAnsible简介Ansible特点概念解释Ansible使用过程中的角色Ansible通信机制Ansible应用场景Ansible工作机制Ansible简介常见的部署管理工具有Chef、Puppet、Ansible、SaltStack、Fabric。Ansible发布于2012年,其作者兼创始人是Michael DeHaan。红帽2015收购了Ansible母公司。官方文档:https://docs.ansible.com/Ansible 是一个极其简单的 IT 自动化引擎,_三台操作系统上部署三台操作系统上部署ansible,并控制端在客户端上创建文件控

最全数据集网站汇总,绝对是一个金矿请查收!_大数据周刊的博客-程序员宅基地

如果用一个句子总结学习数据科学的本质,那就是: 学习数据科学的最佳方法就是应用数据科学。 如果你是一个初学者,你每完成一个新项目后自身能力都会有极大的提高,如果你是一个有..._矿下水数据集

随便推点

[转]Erlang,不能错过的盛宴_黑夜路人的博客-程序员宅基地

Erlang不能错过的盛宴 (快步进入 Erlang的世界) 作者:成立涛 ([email protected] ) 作为程序员,我们曾经闻听很多“业界动态”,“技术革新”,曾经接触很多“高手箴言”,“权威推荐”。这些正确与否,都已成过去! 现在,让我们迎接 Erlang盛宴! 一、经历 2007年 11月在 koders.com搜索代码时,发现 *.erl格式的源文

1.4问题 Don‘t support null authentication-mode. The connection was closed by the remote host_don't support null authentication-mode. the connec_乾坤道的博客-程序员宅基地

Don’t support null authentication-mode.The connection was closed by the remote host查看接口telnet的目标ip是当前路由器的本地接口地址_don't support null authentication-mode. the connection was closed by the rem

2.PWM编程基本操作步骤_双边沿控制_长工张的博客-程序员宅基地

1.两个匹配寄存器可用控制单边沿 PWM 输出。 PWMMR0 控制 PWM 周期率,另一个匹配寄存器( PWMMR1~PWMMR6)控制 PWM 边沿的位置。2.3 个匹配寄存器共同控制一个双边沿 PWM 输出。 PWMMR0 控制 PWM 周期速率,其它匹配寄存器控制( PWMMR1~PWMMR6) 两个 PWM 边沿位置。3.单边沿控制 PWM 输出在每个周期开始时总是为高电平,..._双边沿控制

如何使用Python抓取移动端APP的评论(小白篇)_快手接口rest/n/comment/list_weixin_43482972的博客-程序员宅基地

如何使用Python抓取移动端APP的评论(小白篇)背景介绍女朋友做毕业论文需要抓取移动端APP的评论,由于移动端APP无法在PC端登录,她之前使用的爬虫软件已经无从下手,本来她是想要一个个码字到电脑上面的。我听到她的想法很震惊,对她的毅力很是敬佩,但是想到还需要她帮我做饭,就只能帮她完成这个工作,身为懒人的我,当然不能一个个码字到电脑上面咯。实现原理手机通过PC热点连接互联网使用Fi..._快手接口rest/n/comment/list

.net webapi导出html,C#(.Net Core WebAPI)之API文档的生成(Swagger)_尼不要逗了�mkq0~的博客-程序员宅基地

标签:一 : 安装Swagger搜Swashbuckle.AspNetCore在NuGet 中,安装 Swashbuckle.AspNetCore :我使用的版本为 : 5.0.0-rc2二 : 引入Swagger功能Ⅰ : Startup.cs① ,ConfigureServices方法中:public void ConfigureServices(IServiceCollection serv..._在.net core webapi可以用什么包把html转译存到数据库

Angularjs 源码_weixin_30764137的博客-程序员宅基地

/** * @license AngularJS v1.3.0-beta.15 * (c) 2010-2014 Google, Inc. http://angularjs.orgfunction toKeyValue(obj) { var parts = []; forEach(obj, function(value, key) { ...

推荐文章

热门文章

相关标签