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

Android使用Ktor Client调用搜索API时如何传入{Query}参数

Ktor Client 传递路径占位符参数的实现方案

你可以直接通过Ktor原生的URL构造能力实现占位符替换,不需要手动拼接字符串,框架会自动处理URL编码避免特殊字符导致的请求异常,以下是两种常用写法:

  • 通用原生写法(不需要额外依赖插件,所有Ktor版本通用)
    构造请求时通过pathSegments按顺序传入路径片段,把实际搜索内容作为对应位置的片段传入即可,框架会自动完成编码和路径拼接:
    // 假设searchQuery是存储用户实际输入搜索内容的变量
    client.get {
        url {
            // 已配置BASE_URL的前提下,仅需传入相对路径片段
            pathSegments = listOf(
                "api", "en", "v1", "movie", "movie", "list",
                "tagid", "1000300",
                "text", searchQuery,
                "sug", "on"
            )
        }
    }
    
  • 路径模板写法(适合统一维护接口定义,需依赖Ktor Resources插件)
    如果你希望保留{Query}占位符的路径模板形式统一管理接口,可以使用官方Resources插件:
    1. 先定义和接口路径匹配的资源类,占位符和类参数一一对应:
    import io.ktor.resources.Resource
    
    @Resource("/api/en/v1/movie/movie/list/tagid/1000300/text/{Query}/sug/on")
    data class FilimoMovieSearchApi(val Query: String)
    
    1. 发起请求时直接传入实际搜索参数,插件会自动完成占位符替换和编码:
    // 传入实际搜索词即可发起请求
    client.get(FilimoMovieSearchApi(Query = searchQuery))
    

避坑提示:不要直接用字符串replace()方法手动替换{Query}拼接路径,这种写法无法自动处理搜索词中的空格、中文、/、&等特殊字符,很容易导致路径解析错误、请求失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 09:57:31