curl无法应对很多情况

1.curl 命令,当url中存在匹配条件和空格时如何书写。

如 curl -i -k -X GET http://172.16.x.x:5000/config-manager/v2/script_freq?creater=anony&name=test&c_begin_t=2016-08-02 02:42:06
如果直接发送,& 会被系统解析。空格也会被系统解析。
命令需对特殊字符进行转义。上面的命令可以修改为
curl -i -k -X GET http://172.16.x.x:5000/config-manager/v2/script_freq?creater=anony&name=test&c_begin_t=2016-08-02%2002:42:06
在 & 钱加转义符 , 用 %20 取代空格。

建议 对url使用双引号!

  1. 最近看Elasticsearch: The Definitive Guide这本书的时候,有些时候发现使用curl的时候,在GET请求中加了-d参数,因为很少见到GET请求在请求体中带参数,一般情况下都是在URL里面的,所以好奇特地用wireshark抓了一下包,使用的命令是curl -XGET "http://120.25.162.238:9200/_search?pretty" -d '{"from":5,"size":5}'
    ,返回的结果一切正常最近看Elasticsearch: The Definitive Guide这本书的时候,有些时候发现使用curl的时候,在GET请求中加了-d参数,因为很少见到GET请求在请求体中带参数,一般情况下都是在URL里面的,所以好奇特地用wireshark抓了一下包,使用的命令是curl -XGET "http://120.25.162.238:9200/_search?pretty" -d '{"from":5,"size":5}' ,返回的结果一切正常
curl无法应对很多情况_第1张图片
20160502202058876.jpg

可以看到GET请求的URL是/_search?pretty,URL中并没有想像中的参数,参数是在图片最下方所示的部分中。由此观之,HTTP GET请求实际上也是能在请求体中带参数的,只不过有些服务器(尤其是缓存代理服务器)可能不支持这种方式而已。而ES的设计者认为GET比较符合检索信息的这个动作,比POST要好,所以使用了GET请求,不过为了与习惯保持一致,而且为了兼容所有的服务器,所以把GET换成POST也是可以的。

你可能感兴趣的:(curl无法应对很多情况)