C调用HTTP接口(libcurl)

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

libcurl在多线程中操作共享数据时,需要使用libcurl-share。首先需要调用curl_global_init()函数进行初始化,分配一些全局资源。然后可以使用curl_easy_init()函数创建一个CURLeasy句柄,后续的函数调用都要用到这个句柄。如果没有手动调用curl_global_init()函数,curl_easy_init()函数会自动调用,但为了线程安全性,建议自己调用curl_global_init()。 在使用libcurl函数时,还有一些其他的函数可以使用。例如,可以使用curl_easy_getinfo()函数查询CURL会话的内部信息,具体的说明可以参考libcurl的文档。另外,使用curl_easy_cleanup()函数和curl_easy_init()函数成对出现,可以在CURL会话结束退出时调用curl_easy_cleanup()函数,以释放相关资源。 总之,libcurl提供了一组C语言API函数,可以直接调用。在使用这些函数之前,需要先调用curl_global_init()进行初始化,并在使用完毕后调用curl_global_cleanup()函数进行退出。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [libcurl 接口调用方式](https://blog.csdn.net/weixin_34377919/article/details/85602228)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

catoop

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值