我正在使用以下命令更新数据库(换行符至关重要):
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运行(同样的原因)。
答案 0 :(得分:0)
在第一个示例中,您正在使用POST。在第二个示例中,您使用的是PUT。你确定没错吗?
CURLOPT_CUSTOMREQUEST => 'PUT',