【问题标题】:Is it possible to use `--data-urlencode` and `--data-binary` options for the same curl command?是否可以为同一个 curl 命令使用 `--data-urlencode` 和 `--data-binary` 选项?
【发布时间】:2014-07-01 09:40:36
【问题描述】:

我正在使用curl,我想通过发送--data-urlencode 字符串和--data-binary JSON 文件内容来执行HTTP PUT 请求。是否可以在同一个curl 命令中实现这一点?

我尝试了以下

curl www.website.org --request PUT -H Content-Type: application/json --data-urlencode "key=sample_string" --data-binary @sample_file.json

但它似乎没有按预期工作:key=sample_stringsample_file.json 内容根本没有发送。

【问题讨论】:

    标签: http curl request http-put


    【解决方案1】:

    这里有几件事;

    1. 您的 curl 请求缺少标头的双引号。应该是:
    curl www.website.org --request PUT -H "Content-Type: application/json" \
     --data-urlencode "key=sample_string" --data-binary @sample_file.json
    
    1. 您的内容类型是 application/json,我希望它不是“二进制”,因此您应该使用适当的类型。

    无论如何,您应该能够使用如下简单的 php 脚本找到提交的值:

    $putfp = fopen('php://input', 'r');
    $putdata = '';
    while($data = fread($putfp, 1024))
        $putdata .= $data;
    fclose($putfp);
    
    var_dump($putdata);
    
    echo "---CONTENT_TYPE---\n";
    var_dump($_SERVER['CONTENT_TYPE']);
    

    【讨论】:

      猜你喜欢
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      • 2019-06-21
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多