我正在进行API连接,服务器要求从https服务器进行呼叫,但我找不到如何使用https而不是普通的http来发起CURL呼叫。
这是我的代码:
$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文档:
请注意,您需要通过SSL连接到我们的服务器 安全连接。非SSL连接将被删除。
答案 0 :(得分:0)
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();