Создание сайта на Netlify с использованием CURL в PHP - PullRequest
0 голосов
/ 04 июня 2018

Итак, я могу использовать команды 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, специально ссылающийся на раздел «Создание сайта» (Третий вниз) 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 Ответ

0 голосов
/ 05 июня 2018

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

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

                    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...