Создание сайта на Netlify с использованием CURL в переполнении стека

Итак, я могу использовать команды curl для получения информации о сайтах, которые у меня есть на netlify. Тем не менее, в соответствии с документами API, я должен быть в состоянии создать сайт, также используя POST. По жизни я не могу понять, что происходит. При запуске этого страница долго думает, затем обновляет и возвращает пустой ответ, и сайт не создается.

                    $ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://api.netlify.com/api/v1/sites");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = "User-Agent: AppName (accountEmail)";
$headers[] = "Content-Length: 1000";
$headers[] = "Authorization: Bearer MyAPIAuthKey";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

print $result;

Вот документация по Netlify API, специально ссылающаяся на раздел «Создание сайта» (3-й шаг) https://www.netlify.com/docs/api/#sites

Есть идеи, что мне здесь не хватает? Как я уже сказал, я авторизуюсь правильно и могу получить все данные, которые я хочу, из моей учетной записи. Я просто не могу что-то постить.


************************************************* ОБНОВЛЕНО *************************************************


Сейчас я передаю некоторые свойства, однако получаю тайм-аут запроса.

                    curl_setopt($ch, CURLOPT_URL, "https://api.netlify.com/api/v1/sites");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"name\":\"awb-test\"");
curl_setopt($ch, CURLOPT_TIMEOUT, 10000);
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = "User-Agent: AWB (myemail@)";
$headers[] = "Content-Type: application/json";
$headers[] = "Content-Length: 1000";
$headers[] = "Authorization: Bearer MyAPIkey";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

1

Решение

Как сказал дурак в комментариях под ФП, проблема заключалась в жестко заданной длине контента. Чтобы исправить, я построил массив данных POST, json закодировал его и использовал длину строки, чтобы передать соответствующее значение.

                    $post_data = array(
'name'      => '',
'force_ssl' => true,
'repo'      => '',
);
$post_data = json_encode($post_data);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]