【发布时间】:2014-02-20 12:16:17
【问题描述】:
我想做如下的事情:
curl localhost:8080/myapp/?params={"first_key":"I'm the first value","second_key":"the second value"}
当我尝试通过浏览器访问页面时,这很正常,但它不能通过 cURL 工作。我究竟做错了什么?
【问题讨论】:
标签: json curl get curl-commandline
我想做如下的事情:
curl localhost:8080/myapp/?params={"first_key":"I'm the first value","second_key":"the second value"}
当我尝试通过浏览器访问页面时,这很正常,但它不能通过 cURL 工作。我究竟做错了什么?
【问题讨论】:
标签: json curl get curl-commandline
这个问题是由 cURL 的“URL globbing parser”引起的(参见docs):
您可以通过在大括号内编写部分集来指定多个 URL 或部分 URL,如下所示:
http://{一、二、三}.com
所以你的命令被扩展为:
curl localhost:8080/myapp/?params="first_key":"I'm the first value"
curl localhost:8080/myapp/?params="second_key":"the second value"
您需要使用-g 选项(或--globoff):
此选项关闭“URL globbing parser”。当您设置此选项时,您可以指定包含字母 {}[] 的 URL,而不会被 curl 本身解释。
所以:
curl -g localhost:8080/myapp/?params={"first_key":"I'm the first value","second_key":"the second value"}
然后,要保留双引号,您需要将 URL 用单引号括起来:
curl -g 'localhost:8080/myapp/?params={"first_key":"I'\''m the first value","second_key":"the second value"}'
【讨论】: