PHP Curl GET请求返回NULL,求助解决方法
解决PHP Curl调用Coinroom API的问题
嘿,我知道你之前写过简单的PHP Curl请求能成功,但这次调用coinroom的API卡壳了对吧?先看看你代码里的几个明显问题,再给你修正后的完整方案:
你代码里的核心问题
- 变量名不统一:你初始化的Curl会话变量是
$cSession,但后面设置参数时用了$ch——这个未定义的变量会直接导致请求失败 - 缺少关键Curl选项:比如没有设置返回响应内容的选项,也没处理SSL证书验证的问题,这些都是调用HTTPS API时常见的坑
- 代码未完成:你贴的代码到
CURLOPT_CUSTO...就断了,肯定缺少后续的执行和关闭会话的逻辑
修正后的完整代码
<?php // 设置目标API地址 $url = "https://coinroom.com/api/availableCurrencies"; // 定义请求头,明确要求JSON格式响应 $headers = array( 'Accept: application/json', 'Content-Type: application/json' ); // 初始化Curl会话 $cSession = curl_init(); // 配置Curl核心参数 curl_setopt($cSession, CURLOPT_URL, $url); curl_setopt($cSession, CURLOPT_HTTPHEADER, $headers); // 让Curl将响应返回给变量,而非直接输出 curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true); // 临时关闭SSL证书验证(开发环境可用,生产环境建议配置根证书后开启) curl_setopt($cSession, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($cSession, CURLOPT_SSL_VERIFYHOST, false); // 执行请求并获取响应 $response = curl_exec($cSession); // 检查请求是否出现错误 if (curl_errno($cSession)) { echo 'Curl请求错误: ' . curl_error($cSession); } else { // 将JSON响应解析为关联数组 $currencyData = json_decode($response, true); // 输出获取到的币种数据 print_r($currencyData); } // 关闭Curl会话,释放资源 curl_close($cSession); ?>
关键细节说明
- 变量一致性:全程使用同一个会话变量
$cSession,避免未定义变量的致命错误 - 返回响应控制:
CURLOPT_RETURNTRANSFER是必须的,否则Curl会直接把响应打印到页面,你没法后续处理数据 - SSL证书处理:如果你的服务器没有配置正确的SSL根证书,关闭
CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST能快速解决连接失败的问题,但生产环境强烈建议开启,并通过CURLOPT_CAINFO指定根证书文件路径 - 错误排查:加入
curl_errno和curl_error能帮你快速定位请求失败的原因,比如网络问题、API限制等 - JSON解析:用
json_decode($response, true)把API返回的JSON字符串转成PHP数组,方便你提取需要的币种信息
内容的提问来源于stack exchange,提问作者always_confused
相关产品推荐
相关产品推荐

