Curl命令行使用
curl是一个非常强大的工具
1.安装
如果没有安装的话,在Ubuntu中使用:sudo apt-get install curl,即可安装。
2.常用命令
1 | ## 分别测试不同的方法 |
3.将获取到的内容保存为文件
主要使用linux提供的重定向符: >> 后面输入一个文件名就可以了。
1 | curl "http://www.baidu.com" -X POST -i -H "Content-Type:text/plain" -d '{"key":"value"}' >> test.txt |
4.针对gzip内容进行解压缩
当我请求一个gzip内容的网页时返回的响应头中会出现: Content-Encoding: gzip,这个使用应该先解压缩,使用: curl –compressed url,然后如果还是乱码,需要添加:iconv -f gb2312 -t utf-8,可以将gb2312的网页转换成utf-8的网页
1 | curl --compressed "url" -X POST -i -H "Content-Type:text/plain" -d 'json字符串' | iconv -f gb2312 -t utf-8 |
我在刚开始的时候,直接使用iconv进行转换,总是出现:
而是用gunzip进行解压也会报错:
1.curl测试REST接口:https://blog.csdn.net/San_Junipero/article/details/79576967
2.Linux curl 命令下载文件: https://www.cnblogs.com/hujiapeng/p/8470099.html
3.Linux curl 命令下载文件: https://www.cnblogs.com/hujiapeng/p/8470099.html
4.curl命令: https://man.linuxde.net/curl
5.bash – 如何在使用curl时正确处理gzip压缩的网页?:https://codeday.me/bug/20170704/35980.html
6.终端使用curl请求url时返回乱码的解决:https://blog.csdn.net/benben0729/article/details/80882553 (这篇文章中提供了两个步骤解决乱码的问题,第一个就是解压,第二个才是iconv,但是我用第一种解压方法,即使用gungzip没有用,报错了,所以改用–compressed即可)
7.curl请求GB2312网页乱码解决:https://blog.yinghualuo.cn/archives/750/curl%E8%AF%B7%E6%B1%82gb2312%E7%BD%91%E9%A1%B5%E4%B9%B1%E7%A0%81%E8%A7%A3%E5%86%B3/
8.shell中使用curl时,数据为乱码的解决方法,以及一些参数的解释:https://blog.csdn.net/zhangyuan12805/article/details/78043203
5.”the installed libcurl version doesn’t support this”
在解压缩–compressed时,出现了 “the installed libcurl version doesn’t support this”,在另一台机器上却可以
而且使用:curl -h,显示却有这个–compressed命令。
真是让人头大。
尝试了很多方式,升级curl,还是没有解决。奇了怪了,一个版本是curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0(这个版本可以使用–compressed参数),另一台服务器的版本是:curl 7.61.1 (x86_64-pc-linux-gnu) libcurl/7.61.1 OpenSSL/1.1.1c (这个高版本的反而不支持–compressed)
问题是没人遇到过这个问题,真是醉了。
在这里:https://curl.haxx.se/mail/archive-2013-02/0008.html 说,这是正常的,因为所有的help都一样,无论底层的libcurl是什么版本。
结果,我尝试了卸载curl然后重新安装最新版本的curl
卸载其实说麻烦也麻烦,说不麻烦也不麻烦,只要找到安装路径,然后删除文件就可以了,但是我总觉得不对,使用 man 命令的时候,如何查找到安装的软件呢?还没弄明白,干脆就重新下载编译安装,覆盖原文件就好了。编译安装倒是挺简单的,将下载的tar.gz压缩包,使用;tar -zvxf finame,解压后,进入到解压目录,依此执行下面的命令就好了。
1 | $ sudo ./configure |
安装的时候,可以使用:“make >& LOG_make &”和“make install >& LOG_install &” ,保存安装目日志(注意命令输入完成后,要按两次确认键才能执行安装),最后安装成功。
结果,还是不支持–compressed,只能说高版本的不支持compressed选项了。我尝试使用低版本的试试,因为我在另一台服务器上安装了7.29.0版本,是有这个选项的,所以我尝试下载安装curl 7.29.0版本试试。
结果还是失败了,还是不支持–compressed选项
但是我重新查看参考文章,发现了两个相同版本的curl,但是在Features选项中,却不一样,一个有libz,一个没有libz
没有libz:
1.Linux环境下curl安装和移植:https://blog.csdn.net/zqj6893/article/details/35569405
2.Curl Compressed Command not Recognized in Windows:https://superuser.com/questions/497310/curl-compressed-command-not-recognized-in-windows (这里说了在windows上不支持–compressed选项的解决方式)
3.linux下编译安装curl:https://www.cnblogs.com/fnlingnzb-learner/p/6743383.html
黄天不负有心人(我都不知道我花了两天时间研究这个干啥),最后我终于成功了。
根据两个版本特征的对比,我知道了不能使用–compressed选项的版本是确实了libz,我顺便搜了一下libz是干啥的。libz是一个提供函数压缩的函数库,需要安装zlib安装包。我有通过./configure -h,发现了在安装curl时有个–with-zlib选项,如果指定了这个路径,然后重新编译和安装,最后就可以了,先上一张截图。
1 | ## 安装zlib |
指定curl编译选项:
查找zlib安装路径:
大功告成,大功告成,大功告成
1.ubuntu如何安装libz库:https://blog.csdn.net/yuhengyue/article/details/78131758
2.ubuntu下安装zlib的方法:https://blog.csdn.net/wu_cai_/article/details/80278611
3.apt-get下载、安装的软件在哪里: https://blog.csdn.net/m0_37407756/article/details/77247689
4.Ubuntu安装zlib和zlib-devel: https://blog.csdn.net/the_wish/article/details/52057921