是否可以对同一个curl命令使用`--data-urlencode`和`--data-binary`选项?

时间:2014-07-01 09:40:36

标签: http curl request http-put

我正在使用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内容根本不会发送。

1 个答案:

答案 0 :(得分:0)

这里有几件事情;

  1. 您的curl请求缺少标题的双引号。它应该是:

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

  2. 您的内容类型是application / json,我希望不是“二进制”,所以您应该使用合适的类型。

  3. 在任何情况下,您都应该能够使用简单的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']);