Retrofit拼接Query参数时URL同时出现?和&符号如何解决?
Retrofit 请求URL多余&符号修复方案
问题原因
你的@GET注解配置的路径末尾手动添加了无参数跟随的?符号。Retrofit拼接@Query参数的规则为:若路径已存在?,后续所有查询参数统一用&前缀拼接,因此直接生成了?&的异常格式。
修复方案
直接删除@GET路径末尾多余的?即可,Retrofit会自动处理查询参数的拼接逻辑:存在@Query参数时自动补?,多参数自动用&分隔,不会生成多余符号。
修复后的代码示例:
@GET("country/state/select-list-items") suspend fun fetchStates(@Query("countryId") id: Int): Response<List<ServerState>>
补充说明
如果路径需要携带固定查询参数,直接写在路径内即可,不需要额外在末尾加?,示例:
// 带固定参数的正确写法 @GET("country/state/select-list-items?fixedType=1") suspend fun fetchStates(@Query("countryId") id: Int): Response<List<ServerState>>
上述写法会自动生成合法URL:https://devipapi.octavehi.com/api/country/state/select-list-items?fixedType=1&countryId=236
内容的提问来源于stack exchange,提问作者WISHY
相关产品推荐
相关产品推荐

