我想使用curl在HTTP PUT操作中发送多个查询参数。如何编码查询参数?例如:
$ curl -X PUT http://example.com/resource/1?param1=value%201¶m2=value2
如果'值1'包含由shell解释的空格或其他字符,该命令将无法正确解析。
答案 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¶m2=value2" http://whatever
数据应为x-www-form-urlencode
d。
编辑:虽然它完全违反标准,但我已经看到了请求体必须作为查询字符串和作为表单数据传递的实例。
LinkedIn API是最值得注意的。