Web services HTTP PUT查询参数的Curl命令行编码

Web services HTTP PUT查询参数的Curl命令行编码,web-services,rest,http,unix,curl,Web Services,Rest,Http,Unix,Curl,我有多个查询参数,希望使用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

我有多个查询参数,希望使用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
的值将被编码为
值%201
,其中%20是空格字符的编码值。

PUT请求实际上与POST请求一样工作

你应该使用
$curl-X PUT--data“param1=value1¶m2=value2”http://whatever

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

EDIT:虽然这与标准完全相反,但我见过这样的实例:请求主体必须作为查询字符串追加,并作为表单数据传递

LinkedIn API是最著名的