3

以下代码段成功发送 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 相关的帖子,但没有运气。为什么没有公布数据?

4

1 回答 1

10

丢失的部分是

    curl_setopt($request, CURLOPT_UPLOAD, 1);

PHP 文档简要地提到了这个选项,没有任何建议应该设置该选项。尽管通过 CURLOPT_INFILE 指定了 cURL,但至少有一些(如果不是全部)版本不会发布数据,除非还设置了 CURLOPT_UPLOAD。

注意:当您使用此方法发送数据时,响应头将包含HTTP/1.1 100 Continue第一个,然后是HTTP/1.1 200 OK等等。因此,当您解析响应标头时,请注意前 100 个 Continue 响应(您需要将其剥离)。

于 2013-02-17T11:13:28.423 回答