curl简单使用

2018-11-03 16:51:10

对于http调试,curl是一个很好用的工具,本篇文章主要记录curl日常的使用方法。

访问url

$ curl http://www.baidu.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   251  100   251    0     0   7843      0 --:--:-- --:--:-- --:--:--  7843<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=gb2312"><TITLE>302 Moved</TITLE></HEAD><BODY><H1>302 Moved</H1>The document has moved<A HREF="http://www.baidu.com/?tn=28035039_3_pg&ld=www.baidu.com/">click here</A></BODY></HTML>

最基本的使用方法,访问一个url,输出返回结果。

get参数
curl默认使用get方式访问url,所以可以直接在url后添加参数

curl http://localhost:8080/hello?name=bin\&content=hello

注意:url中用&拼接参数时,需要使用\&进行转码

修改http header参数

curl -H "Accept-Language: zh-cn" -H "Accept: application/html"  http://www.baidu.com

上面栗子中通过-H修改http header参数,-H可以使用多次,以修改多个参数。

POST JSON
开发中我们常需要使用POST JSON的方法来访问我们的服务器:

curl -H 'Content-Type: application/json; charset=UTF-8'  \
-X POST -d '{"name":"binecy","content":"hello"}' \
http://localhost:8080/hello

-X POST 指定使用post提交
-d 添加post json内容

post表单参数
除了post json,我们还常常需要post 表单的键值对参数

curl -X POST  -d  'nam=bin&content=hello' \
http://localhost:8080/hello

cookie信息
开发中常常在cookie中携带用户的登陆信息,所以访问url时也要携带cookie信息:

curl -H 'Content-Type: application/json; charset=UTF-8' --cookie "admin_token=00000763aZQ8GP5U" \
-X POST -d '{"name":"binecy","content":"hello"}' \
http://localhost:8080/hello

通过–cookie 添加cookie信息,
–cookie也可以写为-b

显示http头部信息
添加-v参数可以让curl显示http的请求和响应的header信息,方便我们调试

$ curl http://www.baidu.com -v
* Rebuilt URL to: http://www.baidu.com/
* timeout on name lookup is not supported
*   Trying 14.215.177.39...
* TCP_NODELAY set
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to www.baidu.com (14.215.177.39) port 80 (#0)
> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Location: http://www.baidu.com/?tn=28035039_3_pg&ld=www.baidu.com/
< Content-Type: text/html;charset=gb2312
< Pragma: no-cache
< Cache-Control: no-cache
< Connection: close
< Server: wys
< Content-Length: 251
<
{ [251 bytes data]
100   251  100   251    0     0  15687      0 --:--:-- --:--:-- --:--:-- 15687<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=gb2312"><TITLE>302 Moved</TITLE></HEAD><BODY><H1>302 Moved</H1>The document has moved<A HREF="http://www.baidu.com/?tn=28035039_3_pg&ld=www.baidu.com/">click here</A></BODY></HTML>
* Closing connection 0

好了,本篇文章比较简单,但对于curl的日常使用,也基本足够了。