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

如何修复PHP中的HTTP请求?调用http_request()未定义函数报错

修复PHP Clash Royale API请求的致命错误

这个错误指向非常明确:Call to undefined function http_request(),问题出在你调用了一个根本不存在的函数,而且代码里还有重复请求的冗余逻辑。我来帮你一步步搞定:

问题根源拆解

  1. PHP没有内置http_request()函数,你也没自己实现这个函数,所以调用时直接触发致命错误。
  2. 你前面已经通过curl完成了API请求,并且把响应结果存在了$result变量里,但后面又画蛇添足地调用这个不存在的函数,完全是多余操作。
  3. 还有个隐藏坑:你的Authorization头用单引号包裹,里面的$CRapi变量不会被解析成实际的API密钥,这会导致API请求鉴权失败(就算前面的函数问题解决了,API也会返回权限错误)。

修复后的完整代码

<?php 
// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/ 
include 'config/api.php'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://api.clashroyale.com/v1/players/%238CCURC2G'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); 

$headers = array(); 
$headers[] = 'Accept: application/json'; 
// 修复变量解析:用双引号让$CRapi被替换成实际密钥,两种写法二选一都可以
$headers[] = "Authorization: Bearer $CRapi"; 
// 另一种写法:$headers[] = 'Authorization: Bearer ' . $CRapi;

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

$result = curl_exec($ch); 

if (curl_errno($ch)) { 
    echo 'Error:' . curl_error($ch); 
} 
curl_close ($ch); 

// 直接使用curl返回的$result进行JSON解码,去掉无效的http_request调用
$profile = json_decode($result, TRUE); 

echo "<pre>"; 
print_r($profile); 
echo "</pre>"; 
?>

关键修改说明

  • 移除冗余的http_request()调用:直接复用curl请求得到的$result变量,彻底避免调用未定义函数的问题。
  • 修复Authorization头的变量解析:把单引号改成双引号,PHP会自动解析里面的$CRapi变量;或者用字符串拼接的方式,两种写法都能正确传递你的API密钥。
  • 简化逻辑流程:从curl初始化、参数设置、请求执行、错误处理到JSON解码,整个流程连贯无冗余,减少出错概率。

如果之后你需要一个可复用的HTTP请求函数,也可以自己封装curl逻辑,但在这个场景下完全没必要,直接用现有的curl结果就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:05:53