【问题标题】:Line Breaks in PHP cURLPHP cURL 中的换行符
【发布时间】:2014-09-16 19:10:08
【问题描述】:

我正在使用以下命令来更新数据库(换行符很重要):

curl -X PUT -H 'Content-Type: multipart/form-data; boundary=myboundary' -d '--myboundary Content-ID: <request>

{"jsonKey":"jsonValue"} --myboundary-' 'http://target.url.com/path/to/folder'

这可以正常工作,但是 PHP 等效项有问题:

$data = '--myboundary Content-ID: <request>

{"jsonKey":"jsonValue"} --myboundary-';

    $handle = curl_init();
    curl_setopt_array(
        $handle, 
        array(
            CURLOPT_URL => 'http://target.url.com/path/to/folder',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_CUSTOMREQUEST => 'PUT',
            CURLOPT_HTTPHEADER => 'Content-Type: multipart/form-data; boundary=myboundary',
            CURLOPT_BINARYTRANSFER => true,
            CURLOPT_POSTFIELDS => $data
         )
    );
    $response = curl_exec($handle);
    if($response === false){
        echo 'curl error: ' . curl_error($handle);
    }
    curl_close($handle);
    return $response;

它没有返回错误,但是以 json 格式输入的数据设置为 null。 我已经检查了其他所有内容,但似乎找不到关于 cURL 如何处理换行符的明确信息,并假设 PHP 换行符和控制台换行符之间存在一些差异。

任何关于换行问题的见解,或者为什么这可能不起作用将不胜感激。

如果有人认为很明显:不,我无法更改数据库,甚至无法查看它(工作规定),这需要从 PHP 运行(同样的原因)。

【问题讨论】:

  • 这个问题/答案可以帮助您了解如何在 cURL 中发送 POST 变量:stackoverflow.com/questions/5224790/…
  • 你试过$data = '--myboundary Content-ID: &lt;request&gt;\n\n"jsonKey":"jsonValue"} --myboundary-';之类的吗?
  • 我确实阅读了那个问题/答案。唉,它并没有纠正我的问题。另外,我确实尝试用 \n 替换换行符。我也尝试了 \r 方法(以及两者的组合),但无济于事。我以为这会解决它...无论如何,谢谢。

标签: php curl


【解决方案1】:

在第一个示例中,您使用的是 POST。在第二个示例中,您使用的是 PUT。你确定这是对的吗?

            CURLOPT_CUSTOMREQUEST => 'PUT',

【讨论】:

  • 应该更仔细地查看...错误在第一个命令中,它也应该说“PUT”。进行了编辑(感谢您发现)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 2012-05-10
  • 2017-06-05
  • 2013-07-01
  • 1970-01-01
相关资源
最近更新 更多