curl简介

curl是一个开源的命令行工具,它基于网络协议,对指定URL进行网络传输,得到数据后不任何具体处理(如:html的渲染等),直接显示在"标准输出"(stdout)上。

curl支持的网络协议有很多,包括:DICT、FILE、FTP、FTPS、GOPHER、GOPHERS、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、MQTT、POP3、POP3S、RTMP、RTMPS、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET和TFTP。

curl的参数也有很多,下面介绍一些常用的参数,建议收藏保存。

发送GET请求

当curl不带有任何参数时,curl默认发出 GET 请求,服务端返回的内容不会做任何解析直接在命令行显示。示例:

curl http://www.csdn.net

因为需要跳转到HTTPS,所以返回301:

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>

发送POST请求

使用-d参数时,header的Content-Type被自动赋值为application/x-www-form-urlencoded,并且发送 POST 请求。示例:

 curl -d 'user=万猫学社&pwd=onemore' http://csdn.net/login

因为需要跳转到HTTPS,同样返回301:

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>

发送json请求

发送json请求还需要用到两个参数:-X参数指定 HTTP 请求的方法,-H参数指定 HTTP 请求的header。示例:

curl -X POST -H "Content-Type: application/json; charset=UTF-8" -d '{"user":"万猫学","pwd":"onemore"}' http://www.csdn.net/login

其中,-X参数指定 HTTP 请求的方法为 POST,-H蚕食指定header的 Content-Type 为 application/json; charset=UTF-8 ,-d参数指定数据为 {“user”:“万猫学”,“pwd”:“onemore”} 。

显示HTTP响应头

-i参数显示服务端响应内容的同时,也显示HTTP响应头。示例:

curl -i http://www.csdn.net

会先显示服务端的响应头,然后空一行,再显示服务端响应内容,如下:

HTTP/1.1 301 Moved Permanently
Server: openresty
Date: Thu, 20 Jan 2022 11:59:42 GMT
Content-Type: text/html
Content-Length: 166
Connection: keep-alive
Keep-Alive: timeout=20
Location: https://www.csdn.net/<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>

显示响应过程

-v参数显示的整个响应过程,我们可以看到底层到底发生了什么。示例:

curl -v http://www.csdn.net

显示如下:

* About to connect() to www.csdn.net port 80 (#0)
*   Trying 39.106.226.142...
* Connected to www.csdn.net (39.106.226.142) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.csdn.net
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Server: openresty
< Date: Thu, 20 Jan 2022 12:07:40 GMT
< Content-Type: text/html
< Content-Length: 166
< Connection: keep-alive
< Keep-Alive: timeout=20
< Location: https://www.csdn.net/
<
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>

其中,以*开头的行表示curl提供的额外信息,以>开头的行表示请求头, <开头的行表示响应头。

只显示响应头

有时候响应内容太长,只关心响应头时,可以使用-I参数。示例:

curl -v http://www.csdn.net

显示如下:

HTTP/1.1 301 Moved Permanently
Server: openresty
Date: Thu, 20 Jan 2022 12:15:30 GMT
Content-Type: text/html
Content-Length: 166
Connection: keep-alive
Keep-Alive: timeout=20
Location: https://www.csdn.net/

参考链接:
https://curl.se/docs/manpage.html
https://www.ruanyifeng.com/blog/2019/09/curl-reference.html

curl常用参数详解及示例相关推荐

  1. linux下的arp刷新命令详解,linux arp 命令常用参数详解

    linux arp 命令常用参数详解 linux arp 命令常用参数详解 显示和修改地址解析协议(ARP)使用的"IP 到物理"地址转换表. ARP -s inet_addr e ...

  2. nmap常用参数详解

    nmap常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 借用英雄联盟的一个英雄赵信的一句话:"即使敌众我寡,末将亦能万军丛中取敌将首级!".三国关羽 ...

  3. WPF-Visifire.Chart使用:常用参数详解

    WPF-Visifire.Chart使用:常用参数详解 添加引用 1.百度下载WPFVisifire.Charts.dll程序集. 2.将程序集添加至你的项目引用. 代码部分 前台代码 <Gri ...

  4. free命令常用参数详解

    free命令常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在运维期间我们会经常去查看服务器硬件信息,比如说内存,大家可能知道看内存用"[root@yinzh ...

  5. ls命令及常用参数详解

    ls命令及常用参数详解 ls命令及常用参数详解 ls命令详解 Linux中执行ls -l后,显示的各列代表什么意思? ls命令及常用参数详解 ♢\color{red}{\diamondsuit}♢ l ...

  6. Pandas读取和将数据存储到多个sheet的excel以及read_excel函数常用参数详解

    Pandas读取和将数据存储到多个sheet的excel以及read_excel函数常用参数详解 Excel数据显示: read_excel函数常用参数详解 1.io 读取路径 个人比较喜欢第一种(r ...

  7. docker常用参数详解,docker run常用参数详解(精)

    1. 查询github上的镜像 docker search sybase 2. 下载 docker pull ifnazar/sybase_15_7 3. 删除镜像 docker rmi -f run ...

  8. ping ip 端口_学生会私房菜【20200305期】——Ping命令及其常用参数详解

    一命令原理 Ping是ICMP的一个典型应用.Ping是检测网络连通的常用工具,同时也能收集其他相关信息.用户可以在Ping命令中指定不同参数,如ICMP报文长度.发送的ICMP报文个数.等待回复响应 ...

  9. DBCP连接池常用参数详解

    DBCP连接池配置详解 连接池空闲连接数:连接池中存放的没有被使用的连接,使用getNumIdle()方法获取 连接池活动连接数:已经被程序借出,正在使用的连接数,当调用conn.close()方法后 ...

最新文章

  1. 通过反射执行get、set方法
  2. 【译】MongoDb vs Mysql—以NodeJs为例
  3. 对Fragment生命周期的理解以及其与Activity的关联
  4. 万物皆对象java_又一次认识java(一) ---- 万物皆对象
  5. NLP深度学习:PyTorch文本分类
  6. 在界面中显示文本内容
  7. 我如何构建SiriWaveJS库:看一下数学和代码
  8. 用VC++建立Service服务应用程序
  9. linux嵌入式缺点,嵌入式领域linux作为实时操作系统的缺点
  10. 博文内部设置目录尝试
  11. [转载]Web前端开发工程师编程能力飞升之路
  12. 攻击日志分析 中职网络安全
  13. 程序员的三行代码情书
  14. 虚拟机的服务器管理器怎么打开,虚拟机启动任务管理器
  15. 什么是GPU服务器?如何正确选择?
  16. 美通企业周刊 | 中国全球化品牌50强榜单发布;酩帝诗威士忌拍出近21万美元天价...
  17. 机器人控制算法一之四轴机械臂正、逆运动学详解
  18. 微信支付(一)SpringBoot 实现微信扫码支付/Native支付
  19. 【大数据开发】SparkSQL——RDD、DataFrame、DataSet相互转换、DSL常用方法、SQL风格语法、Spark读写操作、获取Column对象的方式
  20. OVERLAPPED I/O 异步APC

热门文章

  1. (栈的应用5.2.2)POJ 2106 Boolean Expressions(表达式求值)
  2. 阿里企业邮箱设置过滤方法
  3. 常见的电子元器件分类介绍
  4. photoshop 人物修容的大体步骤
  5. 第五章 动态规划法(必做题)
  6. 服务器电话销售话术,电话销售必看:让客户无法拒绝的13个经典话术
  7. win10新建虚拟机网络配置未连接服务器,Win10系统VMWare虚拟机无法连接网络怎么办?...
  8. 【华为OD统一考试B卷 | 100分】按身高和体重排队(C++ Java JavaScript Python)
  9. 基于RWEQ模型的土壤风蚀模数估算及其变化归因分析
  10. 【C++】C++调用Python