以下代码片段成功发送 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);
我可能已经阅读了所有与 cURL POST 相关的帖子,但没有运气。为什么数据没有发布?
缺失的部分是
curl_setopt($request, CURLOPT_UPLOAD, 1);
PHP 文档简要提到了此选项,但没有任何内容表明应该设置该选项。尽管通过 CURLOPT_INFILE 指定了数据,但至少某些(如果不是全部)版本的 cURL 不会发布数据,除非还设置了 CURLOPT_UPLOAD。
注意:当您使用此方法发送数据时,响应头将包含HTTP/1.1 100 Continue
首先,其次是HTTP/1.1 200 OK
等等。因此,当您解析响应标头时,请注意前 100 个Continue 响应(您需要将其删除)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)