<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,如需轉載請自行聯系原作者