卷曲命令行编码HTTP PUT的查询参数

时间:2015-10-06 21:28:55

标签: web-services rest http unix curl

我想使用curl在HTTP PUT操作中发送多个查询参数。如何编码查询参数?例如:

$ curl -X PUT http://example.com/resource/1?param1=value%201&param2=value2

如果'值1'包含由shell解释的空格或其他字符,该命令将无法正确解析。

2 个答案:

答案 0 :(得分:13)

解决方案是将-G开关与--data-urlencode开关结合使用。使用原始示例,该命令将如下所示:

$ curl -X PUT -G 'http://example.com/resource/1' --data-urlencode 'param1=value 1' --data-urlencode param2=value2

-G开关会将使用--data-urlencode开关编码的参​​数附加到带有?分隔符的http网址末尾。

在示例中,param1的值将编码为value%201,其中%20是空格字符的编码值。

答案 1 :(得分:0)

PUT请求实际上就像POST请求一样。

你应该使用 $ curl -X PUT --data "param1=value1&param2=value2" http://whatever

数据应为x-www-form-urlencode d。

编辑:虽然它完全违反标准,但我已经看到了请求体必须作为查询字符串作为表单数据传递的实例。

LinkedIn API是最值得注意的。