PHP CURL : HTTP/1. 1 411 长度要求

标签 php curl content-length

即使我指定了内容长度,我仍然收到错误:

Length Required


HTTP Error 411. The request must be chunked or have a content length.

这是我的代码

$curl = curl_init();
$data = array("Key" => "Value", "Key2" => "Value2");
$data = json_encode($data);
$length = strlen($data);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json;charset=utf-8", "Content-Length: $length"));
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_HEADER, true);

$result = curl_exec($curl);

有什么想法吗?

最佳答案

您确定需要使用 NTLM 身份验证选项吗?

curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);

我对此进行了测试,它导致请求中省略了 content-type header 以及 JSON 负载。

尝试删除该行并查看请求是否有效。

关于PHP CURL : HTTP/1. 1 411 长度要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35066772/

相关文章:

php - 如何在单独的页面中回显某些内容

PHP Artisan Tinker 不适用于 Laravel 5.4 和 PHP 7.0.1

php - 设置 jEditable 参数

php - 带有证书的curl命令到php SoapClient (BankID)

php - 接收 JSON POST

curl - 通过 CURL 连接时 Kibana 连接被拒绝?

php - MySQL - 比较一列中的所有值并写入另一列

PHP SOAP 请求

python - 获取填充字典的大小

go - 如何知道我的请求主体的内容长度以便将其添加到我的请求 header 中