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