【问题标题】: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&param2=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 是最引人注目的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-05
        • 2020-09-08
        • 2020-04-11
        • 1970-01-01
        • 2012-11-02
        • 1970-01-01
        • 2012-07-11
        • 1970-01-01
        相关资源
        最近更新 更多