【发布时间】: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: <request>\n\n"jsonKey":"jsonValue"} --myboundary-';之类的吗? -
我确实阅读了那个问题/答案。唉,它并没有纠正我的问题。另外,我确实尝试用 \n 替换换行符。我也尝试了 \r 方法(以及两者的组合),但无济于事。我以为这会解决它...无论如何,谢谢。