Даже если я указал длину содержимого, я все равно получаю сообщение об ошибке:
Требуемая длина
Ошибка HTTP 411. Запрос должен быть разделен на части или иметь длину содержимого.
Это мой код
$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
заголовок, а также полезная нагрузка JSON, которая будет опущена в запросе.
Попробуйте удалить эту строку и посмотрите, как работает запрос.
Вы устанавливаете Content-length в длину $ data, но вместо $ data вы публикуете $ update_json
У меня была такая же проблема, и я несколько часов ломал себе мозги.
Просто удалите длину содержимого из заголовка:
как это
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json;charset=utf-8"))