Я устанавливаю соединение через API, и сервер требует, чтобы вызов выполнялся с сервера https, но я не могу найти, как инициировать вызов CURL с использованием https вместо обычного http.
это мой код:
$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 Forbidden.
Я убедился, что ключ api верен, а также конечная точка URL, поэтому единственная причина 403 заключается в том, что вызов не выполняется с сайта https.
Хостинг веб-сайта - это общий сервер.
Любые идеи?
Обновлено: это из документации API:
Please note that you’re required to connect to our server from a SSL secure connection. Non SSL connections will be dropped.
Наиболее вероятная проблема заключается в том, что вы не указали перед URL-адресом https://. Попробуйте $url = preg_replace('/^https?:///', 'https://', $url); вверху, чтобы убедиться, что URL-адрес подключается через SSL.
URL, по которому я звоню, - https $url = 'https://app.webinarjam.com/api/v2/webinar';
Я почти уверен, что вы ошибаетесь в причине 403-го.






Причина, по которой 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();
Вы указали https: // в URL-адресе? CURL не знает, какое у вас соединение с веб-сервером, и это не должно волновать.