Инициировать скручивание из https - PullRequest
0 голосов
/ 18 мая 2018

Я устанавливаю соединение API, и сервер требует, чтобы вызов был сделан с сервера https, но я не могу найти способ инициировать вызов CURL, используя https вместо обычного http.

thisмой код:

$url = 'https://app.webinarjam.com/api/v2/webinar';
$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_HEADER, 1);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array("Content-type: application/x-www-form-urlencoded"));
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array("Expect:"));
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array("Accept: application/json" ));
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, 2);
$query = http_build_query($data);
curl_setopt($curlHandle, CURLOPT_POST, true);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $query);

ob_start();
curl_exec($curlHandle);
$content = ob_get_contents();
ob_end_clean();

, и я просто получаю 403 Запрещенный ответ.

Я убедился, что ключ API правильный, а также конечная точка URL, поэтому единственная причина403 заключается в том, что вызов не выполняется с сайта https.

Хостинг веб-сайта является общим сервером.

Есть идеи?

Редактировать: это из документации API:

Обратите внимание, что вам необходимо подключиться к нашему серверу через безопасное соединение SSL.Соединения без SSL будут сброшены.

1 Ответ

0 голосов
/ 18 мая 2018

Причина, по которой CURLOPT_HTTPHEADER принимает массив в качестве аргумента, заключается в том, что вы можете указать несколько заголовков одновременно.Я думаю, что это может быть проблемой, так как последний может переопределять предыдущие.

$headers    =   [];
$headers[]  =   "Content-type: application/x-www-form-urlencoded";
$headers[]  =   "Except: ";
$headers[]  =   "Accept: application/json";

$url = 'https://app.webinarjam.com/api/v2/webinar';
$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_HEADER, 1);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, 2);
$query = http_build_query($data);
curl_setopt($curlHandle, CURLOPT_POST, true);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $query);

ob_start();
curl_exec($curlHandle);
$content = ob_get_contents();
ob_end_clean();
...