从https启动curl

时间:2018-05-18 17:25:36

标签: php curl https http-status-code-403 php-curl

我正在进行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连接将被删除。

1 个答案:

答案 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();