Curl命令行对HTTP PUT的查询参数进行编码

问题描述:

我有多个查询参数,我想使用curl在HTTP PUT操作中发送。如何编码查询参数?示例:Curl命令行对HTTP PUT的查询参数进行编码

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

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

解决的方法是将-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 URL的结尾。

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

PUT请求实际上像POST请求一样工作。

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

数据应该是x-www-form-urlencode d。

编辑:虽然这是完全违背了标准的,我见过的实例,其中请求主体必须都必须被追加为作为表单数据传递查询字符串

LinkedIn API是最值得关注的。