网络请求
当前网络层位于 core/network.h / core/network.cpp,主要服务两类能力:
- 图片节点加载
http/https图片和 Bing 每日图。 - 页面示例请求文本 API,再把结果写入
ui.text(...)。
平台支持
- Windows:优先使用 libcurl;如果 CMake 没找到 curl,则使用系统
URLDownloadToFileA。 - Linux / 其他非 Windows:使用 libcurl。CMake 在非 Windows 平台要求
CURL::libcurl。
文本 API
core::network::requestText(
"bing.meta",
"https://www.bing.com/HPImageArchive.aspx?format=js&n=1&idx=0&mkt=zh-CN");
const core::network::TextResult result = core::network::textResult("bing.meta");
if (result.ready && result.ok) {
ui.text("api.text")
.size(520.0f, 72.0f)
.text(result.body)
.wrap(true)
.build();
}
requestText 只会为同一个 key 启动一次后台请求。请求完成后会唤醒 GLFW 事件循环,app/dsl_app.h 检测到网络文本完成后会重新 compose 页面。
gallery 的 About 页展示了 Bing API 文本结果。
图片网络请求
ui.image("remote")
.size(260.0f, 150.0f)
.url("https://example.com/picture.png")
.radius(16.0f)
.build();
网络图片会下载到系统临时缓存目录,再按本地图片解码并上传纹理。下载完成后 Runtime 会重绘图片区域。
Bing 每日图
ui.image("bing")
.size(260.0f, 150.0f)
.bingDaily(0, "zh-CN")
.radius(16.0f)
.build();
bingDaily(idx, mkt) 会请求 Bing HPImageArchive API,解析返回 JSON 中的图片 URL,然后下载图片。
当前限制
- 现在只有 GET 请求。
- 还没有暴露 header、body、取消、进度、重试策略。
- 文本 API 结果是原始字符串;JSON 解析目前由页面示例自己做轻量提取。