如何在Retrofit请求中设置URL静态部分并解决查询参数配置报错
错误原因
java.lang.IllegalArgumentException: URL query string "age={Age}&api_key=randomkey" must not have replace block. For dynamic query parameters use @Query.
这个报错核心规则是:Retrofit 的 @GET 注解中,{} 占位符仅允许用于路径段(对应 @Path 注解的参数),不能用于查询参数部分。
你已经通过 @Query("age") 声明了动态查询参数,Retrofit 会自动将参数值拼接到最终请求的查询串中,不需要手动在URL里写 age={Age} 占位符。
修正后的代码
@GET("/users/profile/{User}?api_key=randomkey") suspend fun enableVoice( @Path("User") user: String?, @Query("age") age: String? ): Response<UserResponse?>
补充说明
- 固定查询参数可以直接写在
@GET的URL中,不需要额外处理,比如示例里的api_key=randomkey - 如果
api_key后续需要改为动态参数,删掉URL里的对应配置,新增@Query("api_key") apiKey: String参数即可 - 如果有大量动态查询参数,可使用
@QueryMap注解传入Map类型参数,批量拼接查询串
内容的提问来源于stack exchange,提问作者Bob Redity
相关产品推荐
相关产品推荐

