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

PHP中带Authorization Token的Curl GET请求无法正常工作问题

问题分析与解决

错误根源

返回的错误value pair (missing equal-sign) in Authorization header表明服务器解析Authorization请求头时,判定格式不符合规范。结合你的代码来看,核心问题大概率是**$responseDecode->access_token为空或未正确获取到有效Token**,导致最终生成的Authorization头变成Authorization: Bearer (Bearer后无Token内容),服务器无法识别这种格式。

另外,从curl_getinfo结果中看到size_upload=127,GET请求通常不会产生上传内容,这可能是代码残留了POST相关设置,但并非当前错误的核心诱因。

排查与修复步骤

  1. 验证Token的有效性
    在构造请求头之前,先输出$responseDecode变量,确认access_token字段存在且有有效值:

    var_dump($responseDecode);
    exit;
    

    若$responseDecode是数组而非对象(比如之前用json_decode($resp, true)解析),则需改为$responseDecode['access_token']。

  2. 构造合规的Authorization头
    确认Token有效后,再构造请求头,同时增加空值判断与格式处理:

    if (empty($responseDecode->access_token)) {
        die("未获取到有效访问Token");
    }
    $headers = array(
        "Content-Type: application/json; charset=utf-8",
        "Authorization: Bearer " . trim($responseDecode->access_token)
    );
    

    使用trim()去除Token可能存在的首尾空格,避免格式异常。

  3. 明确指定请求类型
    确保当前请求为GET,避免意外的POST设置干扰:

    curl_setopt($ch, CURLOPT_POST, false);
    
  4. 调试实际发送的请求头
    开启curl的请求头调试,查看真实发送的Authorization头是否符合Bearer <token>格式:

    curl_setopt($ch, CURLINFO_HEADER_OUT, true);
    // 执行请求后打印请求头
    $requestHeader = curl_getinfo($ch, CURLINFO_HEADER_OUT);
    echo "实际请求头:" . $requestHeader;
    

修复后的完整代码示例

<?php
// 确保已正确获取并解析Token(此处假设前置获取Token逻辑已完成)
if (empty($responseDecode->access_token)) {
    die("未获取到有效访问Token");
}

$headers = array(
    "Content-Type: application/json; charset=utf-8",
    "Authorization: Bearer " . trim($responseDecode->access_token)
);

$xurl = 'https://test.api.us2.abc.com/oauth/api/reg/number/';
$query = http_build_query([
 'numId' => 10000
]);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $xurl . '?' . $query); // 修正URL拼接,避免重复的?
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, false); // 明确指定GET请求

// 可选:开启请求头调试
// curl_setopt($ch, CURLINFO_HEADER_OUT, true);

$resp = curl_exec($ch);

// 可选:打印请求头
// $requestHeader = curl_getinfo($ch, CURLINFO_HEADER_OUT);
// echo "实际请求头:" . $requestHeader;

$respArray = json_decode($resp);
print_r($respArray);

curl_close($ch); // 关闭curl资源
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:17:52