Kuikly Network And JSON
Kuikly NetworkModule 网络请求与 JSONObject/JSONArray 数据处理助手。在Kuikly中发起网络请求、处理 JSON 数据、上传下载二进制等场景时使用。
Specification
- Skill ID
- tencent-tds/kuiklyui-ai/kuikly-network-and-json
- Publisher
- tencent-tds
- Repository
- kuiklyui-ai
- Installs
- 0
- Files
- 3
- Synced
- Sep 23, 2026
How to use it
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
tencent-tds/kuiklyui-ai/kuikly-network-and-jsonInstalls these files- SKILL.md
- references/JSON_API_REFERENCE.md
- references/NETWORK_API_REFERENCE.md
What this skill tells the agent
Kuikly 网络请求
Contents
- Core Guidelines
- Workflow: HTTP Requests
- Workflow: Binary Requests
- Workflow: Parsing JSON
- 参考资源
Core Guidelines
- 获取 NetworkModule:
- Kuikly DSL(Pager / ComposeView): 直接调用
acquireModule<NetworkModule>(NetworkModule.MODULE_NAME)获取(找不到时抛异常),或用getModule<NetworkModule>(NetworkModule.MODULE_NAME)安全获取(找不到返回 null)。推荐lazy缓存实例。 - Compose DSL(@Composable 函数中): 通过
LocalActivity.current.getPager()获取 Pager 实例,再调用pager.acquireModule<NetworkModule>(NetworkModule.MODULE_NAME)。在 ComposeContainer 类内部(非 @Composable 上下文)可直接调用acquireModule。 - 检查 success: 回调中先判断
success,为true时才安全使用data。失败时通过errorMsg和response.statusCode(注意:Int?可空)排查。 - 设置超时:
httpRequest/httpRequestBinary可指定timeout(秒),默认 30。 - 非 JSON 回包: SDK 自动包装为
{"data": "原始内容"},通过data.optString("data")获取。
Workflow: HTTP Requests
方法选择:
| 场景 | 方法 |
|---|---|
| 简单 GET(无自定义 headers) | requestGet(url, param, callback) |
| 简单 POST(无自定义 headers) | requestPost(url, param, callback) |
| 自定义 headers / Cookie / 超时 | httpRequest(url, isPost, param, headers, cookie, timeout, callback) |
完整方法签名和参数说明见 NetworkModule API 参考。
获取 NetworkModule
Kuikly DSL(在 Pager / ComposeView 中):
import com.tencent.kuikly.core.module.NetworkModule
// lazy 延迟初始化(推荐)
private val networkModule by lazy(LazyThreadSafetyMode.NONE) {
acquireModule<NetworkModule>(NetworkModule.MODULE_NAME)
}Compose DSL(在 @Composable 函数中):
import com.tencent.kuikly.core.module.NetworkModule
import com.tencent.kuikly.compose.ui.platform.LocalActivity
import com.tencent.kuikly.core.pager.Pager
@Composable
fun MyScreen() {
val pager = LocalActivity.current.getPager() as Pager
val networkModule = pager.acquireModule<NetworkModule>(NetworkModule.MODULE_NAME)
// 使用 networkModule 发起请求...
}Compose DSL(在 ComposeContainer 类内部):
@Page("MyComposePage")
class MyComposePage : ComposeContainer() {
// ComposeContainer 继承自 Pager,可直接调用 acquireModule
private val networkModule by lazy(LazyThreadSafetyMode.NONE) {
acquireModule<NetworkModule>(NetworkModule.MODULE_NAME)
}
}GET 请求
networkModule.requestGet(
"https://example.com/api/data",
JSONObject().apply { put("key", "value") }
) { data, success, errorMsg, response ->
if (success) {
val name = data.optString("name")
val count = data.optInt("count")
} else {
val statusCode = response.statusCode // Int? 可能为 null
}
}POST 请求
networkModule.requestPost(
"https://example.com/api/submit",
JSONObject().apply {
put("username", "test")
put("password", "123456")
}
) { data, success, errorMsg, response ->
if (success) {
val result = data.optString("result")
}
}通用请求(httpRequest)
networkModule.httpRequest(
url = "https://example.com/api/data",
isPost = true,
param = JSONObject().apply { put("id", 1) },
headers = JSONObject().apply {
put("Content-Type", "application/json")
put("Authorization", "Bearer token")
},
cookie = "session_id=abc123",
timeout = 30
) { data, success, errorMsg, response ->
// response.statusCode - HTTP 状态码(Int?)
// response.headerFields - 响应头(JSONObject)
if (success) { /* 处理数据 */ }
}Workflow: Binary Requests
方法选择:
| 场景 | 方法 |
|---|---|
| 下载二进制(GET) | requestGetBinary(url, param, callback) |
| 上传二进制(POST) | requestPostBinary(url, bytes, callback) |
| 自定义 headers / Cookie / 超时 | httpRequestBinary(url, isPost, bytes, param, headers, cookie, timeout, callback) |
requestPostBinary内部param传 null。若需同时传 binary body 和 query 参数,使用httpRequestBinary。
下载二进制(GET)
networkModule.requestGetBinary(
"https://example.com/file.png",
JSONObject()
) { data, success, errorMsg, response ->
if (success) {
val fileBytes: ByteArray = data
}
}上传二进制(POST)
networkModule.requestPostBinary(
"https://example.com/upload",
imageBytes
) { data, success, errorMsg, response ->
if (success) {
val responseBytes: ByteArray = data
}
}通用二进制请求(httpRequestBinary)
networkModule.httpRequestBinary(
url = "https://example.com/api/binary",
isPost = true,
bytes = uploadBytes,
param = JSONObject().apply { put("type", "image") },
headers = JSONObject().apply { put("Content-Type", "application/octet-stream") },
cookie = "session_id=abc123",
timeout = 60
) { data, success, errorMsg, response ->
if (success) {
val responseBytes: ByteArray = data
}
}Workflow: Parsing JSON
使用 opt* 系列方法安全读取(不会抛异常,返回默认值)。
完整的 JSONObject/JSONArray API 列表见 JSON API 参考。
核心用法示例
val jsonObj = JSONObject(jsonString)
// 安全读取(不存在时返回默认值)
val str = jsonObj.optString("key") // 默认 ""
val num = jsonObj.optInt("key") // 默认 0
val innerObj = jsonObj.optJSONObject("nested") // JSONObject?
val array = jsonObj.optJSONArray("list") // JSONArray?
// 写入
jsonObj.put("key", "value")
// 遍历所有 key
for (key in jsonObj.keys()) { /* ... */ }JSONArray 遍历
val jsonArr = jsonObj.optJSONArray("list") ?: JSONArray()
for (i in 0 until jsonArr.length()) {
val item = jsonArr.optJSONObject(i) ?: continue
val name = item.optString("name")
}参考资源
- NetworkModule API 参考
- JSONObject/JSONArray API 参考
More from tencent-tds
Use this skill in a project
Open any RiverX project, search the Skills panel for tencent-tds/kuiklyui-ai/kuikly-network-and-json, and install it in one click.
