PHP cURL中的换行符

时间:2014-09-16 19:10:09

标签: php curl

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

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运行(同样的原因)。

1 个答案:

答案 0 :(得分:0)

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

            CURLOPT_CUSTOMREQUEST => 'PUT',