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

GStreamer C代码给souphttpsrc加Authorization头报401错误如何解决

问题原因与解决方法

核心错误原因

你代码中extra-headers的GstStructure构造逻辑完全不符合souphttpsrc的API要求:你错误地把gst-launch命令行的结构化字符串语法整串作为了authorization头的值,其中(string)、双引号、前缀test,都是命令行特有的语法标识,C API调用时不需要传入这些标识。
souphttpsrc的extra-headers属性接受的GstStructure里,每个键对应一个HTTP请求头的名称,每个值直接对应请求头的实际内容即可。

修复后的代码示例

// Set the source location parameter on the souphttpsrc element
GstElement* urisrc  = gst_bin_get_by_name(GST_BIN(data->pipeline), "httphlssrc");
g_object_set(urisrc, "location", from.c_str(), NULL);

// Add token to GET header
if (!data->token.empty())
{
    // 拼接正确的Authorization头值:Bearer + 空格 + 实际token
    gchar* auth_header_value = g_strdup_printf("Bearer %s", data->token.c_str());
    // 构造extra-headers结构,直接传入头名和对应实际值
    GstStructure* extraHeaders = gst_structure_new("extra-headers",
        "Authorization", G_TYPE_STRING, auth_header_value,
        NULL);

    g_object_set(urisrc, "extra-headers", extraHeaders, NULL);

    g_free(auth_header_value);
    gst_structure_free(extraHeaders);
}

g_object_unref(urisrc);

可选检查点

  • 如果你的服务器对请求头大小写敏感,确认头名拼写为Authorization(首字母大写)而非全小写
  • 如果你访问的是自签名证书的HTTPS服务,可额外添加配置g_object_set(urisrc, "ssl-strict", FALSE, NULL);关闭证书校验,生产环境不推荐使用该配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:45:05