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

如何使用file_get_contents传递X-Api-Key请求头获取接口数据

file_get_contents 发起请求时默认不会携带自定义请求头,因此无法通过需要X-API-Key的接口鉴权,你可以通过以下两种方式修改代码:

方案1:沿用file_get_contents实现(适合原有逻辑不动太多的场景)

你需要手动构造HTTP流上下文,把鉴权头传入请求:

// 替换为实际的接口地址
$apiUrl = 'XXXXX/history';
// 替换为你的实际X-API-Key值
$apiKey = '替换为你的API密钥';

// 构造请求配置
$options = [
    'http' => [
        'method' => 'GET',
        'header' => "X-API-Key: $apiKey\r\n"
        // 如果有多个请求头,按格式追加即可,比如加Content-Type:
        // 'header' => "X-API-Key: $apiKey\r\nContent-Type: application/json\r\n"
    ]
];
$context = stream_context_create($options);

// 发起带自定义头的请求
$response = file_get_contents($apiUrl, false, $context);
$data1 = json_decode($response, true);
var_dump($data1);

如果请求失败,可以先直接打印$response查看返回的原始内容,确认是鉴权失败还是接口返回了非JSON格式的错误信息。

方案2:使用cURL实现(兼容性更好,适合大部分PHP环境)

部分服务器会禁用file_get_contents的远程请求权限,用cURL兼容性更高:

$apiUrl = 'XXXXX/history';
$apiKey = '替换为你的API密钥';

$ch = curl_init($apiUrl);
// 要求curl将响应结果作为返回值返回,而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 传入自定义请求头
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "X-API-Key: $apiKey"
]);
// 如果接口是HTTPS且用了自签证书,可以临时打开下面两行跳过SSL验证,正式环境建议关闭
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

$response = curl_exec($ch);
curl_close($ch);

$data1 = json_decode($response, true);
var_dump($data1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:36:04