【发布时间】:2011-11-02 20:03:52
【问题描述】:
看起来curl_setopt_array 与curl_setopt 的多次调用不同。考虑这个脚本:
$ch = curl_init('http://www.stackoverflow.com/');
[options]
curl_exec($ch);
var_dump(curl_getinfo($ch));
如果[options] 是其中之一,它现在会发送正确的请求:
curl_setopt_array($ch, array(
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array('a' => 'b'),
));
或
curl_setopt_array($ch, array(
CURLOPT_POSTFIELDS => array('a' => 'b'),
));
或
curl_setopt($ch, CURLOPT_POSTFIELDS, 'a=b');
curl_setopt($ch, CURLOPT_POST, 1);
但不是这样:
curl_setopt_array($ch, array(
CURLOPT_POSTFIELDS => array('a' => 'b'),
CURLOPT_POST => true,
));
如果在CURLOPT_POSTFIELDS 之后设置CURLOPT_POST,似乎内容长度会被重置。除非使用curl_setopt 而不是curl_setopt_array 设置它可以正常工作。
这是为什么?
【问题讨论】:
-
出色的工作追踪了这一点。现在我可以不再用头撞墙,而是通过 Facebook 的 API 上传照片。