You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中带API密钥的Curl请求格式化及代码修正求助

修正后的Companies House API调用代码

嘿,作为Curl新手踩点坑太正常了,我帮你把代码改对,还会给你拆解每个关键部分:

你的原代码有几个核心问题:

  • 把完整的curl命令塞进了CURLOPT_URL,这是错的,这里只需要填API的纯URL就行
  • 没设置API要求的Basic认证(Companies House规定用API Key作为用户名,密码留空)
  • 没开启CURLOPT_RETURNTRANSFER,导致curl直接输出结果而不是把内容存到变量里
  • 缺少指定接受JSON的请求头,可能会导致返回格式不符合预期

修正后的完整代码

<?php
// 替换成你的Companies House API Key
$apiKey = '你的API密钥';
$apiUrl = 'https://api.companieshouse.gov.uk/search/companies';

$curl = curl_init();

// 设置API请求地址
curl_setopt($curl, CURLOPT_URL, $apiUrl);
// 开启返回结果到变量,而非直接输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 设置Basic认证:API Key作为用户名,密码为空(冒号不能省略)
curl_setopt($curl, CURLOPT_USERPWD, "$apiKey:");
// 告诉服务器我们需要JSON格式的响应
curl_setopt($curl, CURLOPT_HTTPHEADER, [
    'Accept: application/json'
]);
// 本地测试可临时禁用SSL验证(生产环境建议开启,需配置证书)
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

// 执行请求并获取响应内容
$response = curl_exec($curl);

// 检查请求是否出错
if(curl_errno($curl)){
    echo 'Curl请求错误: ' . curl_error($curl);
}

// 关闭Curl资源
curl_close($curl);

// 打印原始JSON结果
echo $response;
?>

关键细节说明

  • CURLOPT_USERPWD: 这是Companies House API的必填项,格式必须是API_KEY:,末尾的冒号代表密码为空,API会以此验证身份
  • CURLOPT_RETURNTRANSFER: 开启这个选项后,curl_exec才会把响应内容返回给变量,而不是直接输出到页面上
  • 错误检查逻辑: 加上curl_errno和curl_error能帮你快速排查请求失败的原因,比如API密钥错误、网络问题等

内容的提问来源于stack exchange,提问作者user2692997

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:01:05