php - 从 https 启动 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 连接将被丢弃。
解决方案
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();
推荐阅读
- c# - 统一调整玩家行为以适应 AI
- python - 继续调用函数,直到满足条件 Python
- javascript - 持续时间超过 24 小时的 Jquery 输入掩码
- cmake - 使用 CMake,如何在 gtest_discover_tests --gtest_list_tests 调用上设置环境属性?
- c# - 无法加载文件或程序集 'System.ComponentModel.Annotations,版本 = 4.2.0.0,
- javascript - 从本地存储中获取数据(最喜欢的项目)
- azure - 在 Azure 的数据工厂中为 Postgresql(源)创建链接服务时无法连接服务器
- python - 如何在 Visual Studio Code 中获取 Code Runner 扩展以使用选定的 Python 解释器?
- javascript - 为什么我无法收到服务器的响应
- ios - 如何在 Swift 中从图像中检测条形码?