<code>1、http请求跳转</code>
<code>[root@n86 bin]</code><code># curl -I -L 10.50.200.32</code>
<code>HTTP</code><code>/1</code><code>.1 302 FOUND</code>
<code>Server: nginx</code><code>/1</code><code>.6.2</code>
<code>Date: Fri, 25 Dec 2015 02:43:18 GMT</code>
<code>Content-Type: text</code><code>/html</code><code>; charset=utf-8</code>
<code>Connection: keep-alive</code>
<code>X-Frame-Options: SAMEORIGIN</code>
<code>Location: http:</code><code>//10</code><code>.50.200.32</code><code>/charade/</code>
<code>HTTP</code><code>/1</code><code>.1 200 OK</code>
<code>Vary: Cookie</code>
<code>Set-Cookie: csrftoken=5dY37iQgcjQnYh1jZdrxptyIkTfUh3Rr; expires=Fri, 23-Dec-2016 02:43:18 GMT; Max-Age=31449600; Path=/</code>
<code>2、https请求GET和PUT</code>
<code>使用证书 curl -s --cacert ca.crt</code>
<code>忽略证书 curl -s -k</code>
<code>curl -s -k -u </code><code>"user:passwd"</code> <code>-H </code><code>"Content-type: application/xml"</code> <code>-X GET https:</code><code>//abc</code><code>.com</code><code>/api/vms</code>
<code>curl -s -k \</code>
<code>-u </code><code>"user:passwd"</code> <code>\</code>
<code>-H </code><code>"Content-type: application/xml"</code> <code>\</code>
<code>-d "</code>
<code><vm></code>
<code><name>test03<</code><code>/name</code><code>></code>
<code><cluster><name>Host-Only<</code><code>/name</code><code>><</code><code>/cluster</code><code>></code>
<code><template><name>centos6u5x64-small-01<</code><code>/name</code><code>><</code><code>/template</code><code>></code>
<code><</code><code>/vm</code><code>></code>
<code>" \</code>
<code>"https://e01.test/api/vms"</code>
<code>3、http状态</code>
<code>hostname</code><code>=www.qq.com</code>
<code>1)得到http status</code>
<code>[root@svr200-22 ~]</code><code># curl -o /dev/null -s -w %{http_code} ${hostname}</code>
<code>200</code>
<code>2)得到详细的 http headers 信息</code>
<code>[root@svr200-22 ~]</code><code># curl -o /dev/null -v http://${hostname}</code>
<code>* About to connect() to www.qq.com port 80 (</code><code>#0)</code>
<code>* Trying 14.17.32.211... connected</code>
<code>* Connected to www.qq.com (14.17.32.211) port 80 (</code><code>#0)</code>
<code>> GET / HTTP</code><code>/1</code><code>.1</code>
<code>> User-Agent: curl</code><code>/7</code><code>.19.7 (x86_64-redhat-linux-gnu) libcurl</code><code>/7</code><code>.19.7 NSS</code><code>/3</code><code>.14.0.0 zlib</code><code>/1</code><code>.2.3 libidn</code><code>/1</code><code>.18 libssh2</code><code>/1</code><code>.4.2</code>
<code>> Host: www.qq.com</code>
<code>> Accept: */*</code>
<code>> </code>
<code> </code><code>% Total % Received % Xferd Average Speed Time Time Time Current</code>
<code> </code><code>Dload Upload Total Spent Left Speed</code>
<code> </code><code>0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0< HTTP</code><code>/1</code><code>.1 200 OK</code>
<code>< Server: squid</code><code>/3</code><code>.4.1</code>
<code>< Date: Wed, 15 Apr 2015 05:54:51 GMT</code>
<code>< Content-Type: text</code><code>/html</code><code>; charset=GB2312</code>
<code>< Transfer-Encoding: chunked</code>
<code>< Connection: keep-alive</code>
<code>< Vary: Accept-Encoding</code>
<code>< Expires: Wed, 15 Apr 2015 05:55:51 GMT</code>
<code>< Cache-Control: max-age=60</code>
<code>< X-Cache: HIT from shenzhen.qq.com</code>
<code>< </code>
<code>{ [data not shown]</code>
<code>100 582k 0 582k 0 0 5573k 0 --:--:-- --:--:-- --:--:-- 6544k* Connection </code><code>#0 to host www.qq.com left intact</code>
<code>* Closing connection </code><code>#0</code>
<code> </code>
<code>3)指定一个目标主机IP(此处以从dns中得到的一个解析结果为例),得到 http headers 信息:</code>
<code>[root@svr200-22 ~]</code><code># nslookup ${hostname} |grep Address |grep -v "#53$" |cut -d " " -f2 |head -n 1 |xargs -i curl -I -H "Host:${hostname}" http://{}/ </code>
<code>Server: squid</code><code>/3</code><code>.4.1</code>
<code>Date: Wed, 15 Apr 2015 05:53:16 GMT</code>
<code>Content-Type: text</code><code>/html</code><code>; charset=GB2312</code>
<code>Vary: Accept-Encoding</code>
<code>Expires: Wed, 15 Apr 2015 05:54:16 GMT</code>
<code>Cache-Control: max-age=60</code>
<code>X-Cache: HIT from shenzhen.qq.com</code>
<code>4)指定一个目标主机IP(此处以从dns中得到的一个解析结果为例),得到详细的 http headers 信息:</code>
<code>[root@svr200-22 ~]</code><code># nslookup ${hostname} |grep Address |grep -v "#53$" |cut -d " " -f2 |head -n 1 |xargs -i curl -o /dev/null -v -H "Host:${hostname}" http://{}/</code>
<code>* About to connect() to 14.17.32.211 port 80 (</code><code>#0)</code>
<code>* Connected to 14.17.32.211 (14.17.32.211) port 80 (</code><code>#0)</code>
<code>> Host:www.qq.com</code>
<code>< Date: Wed, 15 Apr 2015 05:53:46 GMT</code>
<code>< Expires: Wed, 15 Apr 2015 05:54:46 GMT</code>
<code>< X-Cache: MISS from shenzhen.qq.com</code>
<code>100 582k 0 582k 0 0 5349k 0 --:--:-- --:--:-- --:--:-- 5546k* Connection </code><code>#0 to host 14.17.32.211 left intact</code>
<code>5)得到请求响应时间</code>
<code>[root@svr200-22 ~]</code><code># curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" ${hostname}</code>
<code>time_connect: 0.046</code>
<code>time_starttransfer: 0.078</code>
<code>time_total: 0.078</code>
<code>4、curl GET 请求中传递参数为 json 格式,且需要传递变量进去时,如何处理转义的问题</code>
<code>有3种方式来处理:</code>
<code>1)转义参数中的: {} [] " </code>
<code>curl -s \</code>
<code> </code><code>--unix-socket </code><code>/var/run/docker</code><code>.sock \</code>
<code> </code><code>"http:/services?filters=\{\"name\":\[\"${service_name}\"\]\}"</code> <code>\</code>
<code> </code><code>|jq </code><code>'.'</code>
<code>2)转义参数中的: url外层不用</code><code>""</code><code>包含,内层使用 </code><code>''</code> <code>来限制。</code>
<code> </code><code>http:</code><code>/services</code><code>?filters=</code><code>'\{"name":\["'</code><code>${service_name}</code><code>'"\]\}'</code> <code>\</code>
<code> </code>
<code>3)使用 curl -g 参数来允许 URL 中使用 {}[] 而不用转义</code>
<code> </code><code>-g, --globoff</code>
<code> </code><code>This option switches off the </code><code>"URL globbing parser"</code><code>. When you </code><code>set</code> <code>this option, you can specify URLs that contain the letters {}[] without having them being inter‐</code>
<code> </code><code>preted by curl itself. Note that these letters are not normal legal URL contents but they should be encoded according to the URI standard.</code>
<code>实例</code>
<code>~]$ curl </code><code>"127.0.0.1:10001/services?filters=\{\"name\":\[\"${service_name}\"\]\}"</code>
<code>GET </code><code>/services</code><code>?filters={</code><code>"name"</code><code>:[</code><code>"t001"</code><code>]} HTTP</code><code>/1</code><code>.1</code>
<code>~]$ curl 127.0.0.1:10001</code><code>/services</code><code>?filters=</code><code>'\{"name":\["'</code><code>${service_name}</code><code>'"\]\}'</code>
<code>~]$ curl -g 127.0.0.1:10001</code><code>/services</code><code>?filters=</code><code>'{"name":["'</code><code>${service_name}</code><code>'"]}'</code>
本文转自 pcnk 51CTO博客,原文链接:http://blog.51cto.com/nosmoking/1632915,如需转载请自行联系原作者