【问题标题】:Curl command line encoding of query parameters for an HTTP PUTHTTP PUT 的查询参数的 curl 命令行编码
【发布时间】:2016-01-03 23:13:41
【问题描述】:
我有多个要使用 curl 在 HTTP PUT 操作中发送的查询参数。如何编码查询参数?示例:
$ curl -X PUT http://example.com/resource/1?param1=value%201¶m2=value2
如果 'value 1' 包含空格或其他由 shell 解释的字符,则该命令将无法正确解析。
【问题讨论】:
标签:
web-services
rest
http
unix
curl
【解决方案1】:
解决方案是将-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 是空格字符的编码值。
【解决方案2】:
PUT 请求实际上就像 POST 请求一样工作。
你应该使用
$ curl -X PUT --data "param1=value1&param2=value2" http://whatever
数据应该是x-www-form-urlencoded。
编辑:虽然它完全违反标准,但我已经看到请求正文必须作为查询字符串附加 并且 作为表单数据传递的实例。
LinkedIn API 是最引人注目的。