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

Fuchsia:如何为组件授予内置fuchsia.net.http.Loader能力

解决Fuchsia HTTP客户端能力授权问题

1. 在组件Manifest中声明能力依赖

你的组件需要在meta/<组件名>.cm(或.cml)文件里,明确声明要使用fuchsia.net.http.Loader能力:

{
    "program": {
        "binary": "bin/http-client"
    },
    "use": [
        {
            "protocol": "fuchsia.net.http.Loader"
        }
    ]
}

use块的作用是告知组件框架,当前组件依赖该协议能力。

2. 配置能力路由

fuchsia.net.http.Loader是系统内置能力,由/core/http组件提供,你需要通过路由让组件能获取到这个能力,分两种常见场景:

场景1:通过命令行直接启动组件

使用ff component run启动时,通过--route参数指定能力路由规则:

ff component run /core/your-client fuchsia-pkg://your-package-url#meta/http-client.cm --route fuchsia.net.http.Loader=/core/http

这条命令会让组件框架把/core/http提供的fuchsia.net.http.Loader能力,路由给你的客户端组件。

场景2:静态组件拓扑配置

如果你的组件属于某个包或自定义领域,需要在父组件的manifest中添加路由规则:

{
    "children": [
        {
            "name": "http-client",
            "url": "fuchsia-pkg://your-package-url#meta/http-client.cm"
        }
    ],
    "offer": [
        {
            "protocol": "fuchsia.net.http.Loader",
            "from": "parent",
            "to": [ "#http-client" ]
        }
    ]
}

这里的offer块是让父组件将自身从上层系统获取到的fuchsia.net.http.Loader能力,提供给子组件http-client。

3. 代码中获取能力实例

以Rust为例,通过组件上下文获取能力代理:

use fuchsia_component::client::connect_to_protocol;
use fuchsia_net_http::LoaderProxy;

async fn main() -> Result<(), anyhow::Error> {
    let loader = connect_to_protocol::<LoaderProxy>()?;
    // 此处使用loader发起HTTP请求并处理响应
    Ok(())
}

你之前查阅的示例多是自定义组件间的交互,而内置系统能力的核心区别在于:能力提供者是系统预定义的组件(比如/core/http),无需自行编写服务端,只需确保路由指向系统提供者即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:40:57