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

技术标签: 其他  

据不完全了解,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

智能推荐

printf()用法详解_iteye_6233的博客-程序员宅基地

转自:http://baike.baidu.com/view/1427555.htm虽然C语言已经用了好多年,但是真正一些细微的东西还是要经常翻书才能记得清楚。在google叔叔上了找了几分钟没找到需要的知识,结果同事^_^在百度百科一下就找到了,嗯,看来评价一个东西还是要具体情况具体分析,不能妄下定论。printf()函数  printf()函数是格式化输出函数, 一般用于向标准...

基于配置实现增删改查WEB应用开发基础框架_iteye_6481的博客-程序员宅基地

基于配置实现增删改查WEB应用开发基础框架构建一个WEB开发的基础框架(主要包括数据库处理、页面框架及工具类),形成ASP.NET信息管理系统快速开发架构。一、页面框架实现了基于XML定制的列表查询、图表展现及编辑处理,使简单的增删改查业务通过配置来实现。XML的配置可由非开发人员通过系统界面进行设置。二、列表实现了复杂查询条件、合并行列(分组求和的处理)、汇总行及钻取数据和图表的钻取...

这也耽误了我半天时间——DataView的排序_iteye_5985的博客-程序员宅基地

  在一个项目中,我定义了一个DataTable,然后手工给它赋值,接着定义一个DataView用于装载这个DataTable,之所以要定义一个DataView,是为了利用其排序功能。我指定了sort属性,这是一个记录行号的字段,然而运行结果却出乎意料。比如,我希望的顺序是:5,10,20,而实际却是10,20,5,也就是说并没有按其数字大小来排序,而是按字符串来进行比较了。  弄了半天找不到解决...

JAVA除法保留小数点后两位的两种方法_iteye_5625的博客-程序员宅基地

原文地址:[url]http://blog.csdn.net/evatian/article/details/4398016[/url]1.利用Math.round()的方法:两个int型的数相除,结果保留小数点后两位:int a=1188;int b=93;double c;c=(double)(Math.round(a/b)/100.0);//这样为保持2位...

mysql 性别_MySQL中设置性别时想设置“男”,“女”,“保密”,而且要默认为“保密”的解决办法。..._摇滚肉肉的博客-程序员宅基地

比如在创建用户表的过程中,涉及到设置性别:CREATE TABLE imooc_user(id int unsigned auto_increment key,username varchar(20) not null unique,password char(32) not null,sex enum('保密','男','女')not null,face varchar(50) not null...

谁能告诉我JVM什么情况下崩溃会不产生hs_err_pid.log?_iteye_8622的博客-程序员宅基地

自己的服务已经出现过两次这种情况了,linux下的jvm进程悄无声息的没了,却没有发现任何崩溃、转储的hs_err*/core.pid等日志文件;可以排除非人为kill、没有权限写文件这些低级错误。那jvm会在其他什么情况下会就这样一下子撒手啥都不管呢?google出来了些类似信息,但没一个网页能给个答案.. :oops: ...

随便推点

windows 获取以及更改CMD控制台编码[转]_iteye_5495的博客-程序员宅基地

本文转自http://blog.sina.com.cn/s/blog_794b1d96010136yy.html命令 chcp功能:显示或设置活动代码页编号  CHCP [nnn]  nnn 指定代码页编号。  不加参数键入 CHCP 显示活动代码页编号。  nnn指定一已有的系统字符集,该字符...

pytorch安装详细步骤_spatial_coder的博客-程序员宅基地

文章目录环境配置步骤官网选择型号清华源快速安装安装完检验pycharm设置项目环境环境配置步骤如果显卡支持GPU,在命令行处,输入nvidia-smi ,查看自己驱动的版本。参考文章官网选择型号官网清华源快速安装参考博文安装完检验输入torch.cuda.is_available(),显示True则意味着可以使用GPU。pycharm设置项目环境这一步是容易忽略导致操...

工具_anchangong3418的博客-程序员宅基地

1.RPR_ABAP_SOURCE_SCAN 源扫描 ABAP 报表可以通过特定字符串搜索到对应的ABAP程序,例如通过 smartform名称找到使用的程序, smartform标准是没有反查的。2.RSSNR0T1 编号范围间隔的一致性检查和修复(通过SE38执行) 程序会列出了1677多个Number range,让你选择你要修复的Number range,呵呵,"RK_BE...

make menuconfig中各设置项目查找_wangliang888888的博客-程序员宅基地

本文转自http://blog.chinaunix.net/uid-21830881-id-5759094.html以linux-2.6.29 内核版本为例通过 make menuconfig画面中的 各选项的关键字,查找其隶属于哪个Kconfig,即可知其隶属于哪部分源码中的选项。①删除包含 Kconfig关键字 以外的所有 文件linux-2.6.29$ find.!-...

OceanBase CTO杨传辉:下一代企业级分布式数据库的一体化设计_OceanBase数据库官方博客的博客-程序员宅基地_oceanbase缺点

本文嘉宾:杨传辉(花名:日照),蚂蚁集团研究员,OceanBase 创始成员和首席架构师。主导了 OceanBase 技术架构设计,实现分布式数据库在核心金融场景零的突破。同时,他也主导了 OceanBase TPC-C 测试并打破世界纪录。著有专著《大规模分布式存储系统:原理与实践》。本文将带来他从业十几年的专业思考,期待与大家碰撞想法。概要自从 1970 年提出关系模型,关系数据库已经发展了 50 多年的时间,产生了一家市值曾经超过 2000 亿美金的公司,Oracle。然而,传统关系数据库采用

马克思手稿中的数学题_LIUZHIOJ的博客-程序员宅基地

马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令;问男人、女人和小孩各有几人?代码如下#include <stdio.h>#include <stdlib.h>int main(){ int x,y,z; for(x=1;x<10;x++) ...