以下代码片成功发送POST请求但不在$ sendStream中发送数据的问题(流是有效的并包含数据 - 已经过验证):
curl_setopt($request, CURLOPT_HTTPHEADER, array('Content-type: application/x-rethync-request'));
curl_setopt($request, CURLOPT_HEADER, true);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_INFILE, $sendStream);
curl_setopt($request, CURLOPT_INFILESIZE, stream_length($sendStream));
curl_setopt($request, CURLOPT_CUSTOMREQUEST, "POST");
$response = curl_exec($request);
我已经在SO上阅读了所有与cURL POST相关的帖子,但没有运气。为什么没有发布数据?
答案 0 :(得分:10)
缺少的部分是
curl_setopt($request, CURLOPT_UPLOAD, 1);
PHP文档简要提到了这个选项,没有任何暗示应该设置该选项。尽管还设置了CURLOPT_UPLOAD,但至少有一些(如果不是全部)版本的cURL不会发布数据,尽管它是通过CURLOPT_INFILE指定的。
注意:使用此方法发送数据时,响应标头首先包含HTTP/1.1 100 Continue
,然后是HTTP/1.1 200 OK
,依此类推。因此,当您解析响应头时,请注意前100个“继续”响应(您需要将其删除)。