You need to enable JavaScript to run this app. 安卓Retrofit如何正确拼接查询字符串 实现含+号参数的原样传递
优惠活动
大模型
产品
解决方案
定价
更多

安卓Retrofit如何正确拼接查询字符串 实现含+号参数的原样传递

问题成因

Retrofit 默认会对 @Query 注解标注的查询参数执行标准 URI 编码,传入的 test+data 里的 + 会被自动转义为 %2B,这是框架的默认安全机制,和当前的 build.gradle 配置、Repository 层调用逻辑无关。

解决方案
  • 无需修改 build.gradle 配置、Repository 层的现有调用逻辑,仅需调整 ApiService 接口的注解参数,关闭指定查询参数的自动转义
  • 修改后的接口定义如下:
@GET("/?format=json")
fun getAllData(@Query(value = "q", encode = false) q: String) : Call<User>
  • 配置生效后,Retrofit 会将传入的 test+data 原值直接拼接到请求查询参数中,不会对 + 做自动转码
    注意事项:设置 encode = false 后,框架不会对参数值做任何特殊字符转义,需要确保传入的参数值本身符合后端接口的入参要求,避免其他特殊字符引发路径解析异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 05:45:09