Kotlin开发Android食品日程App:Retrofit2配置GET/baseUrl/Query参数问题
代码问题修正指引
- baseUrl格式错误:当前编写的baseUrl字符串开头夹带了多余的空格,会直接触发Retrofit的路径格式校验异常。Retrofit要求baseUrl必须是带域名根路径、以斜杠结尾的合法地址,正确写法应为
https://data.sfgov.org/,不能在开头或中间夹带不可见的空白字符。 - GET请求路径拼接不匹配:按照Retrofit的固定拼接规则,
@GET注解内的路径会直接拼在baseUrl末尾。当前写的@GET("jjew-r69b.json")拼接后生成的最终请求地址会缺失resource/路径段,和目标接口地址不匹配。需要把注解内的路径改成@GET("resource/jjew-r69b.json"),才能保证拼接后的地址和目标接口完全一致。 - Query参数配置说明:该开放数据接口的认证令牌参数并非
api_Key,如果按当前参数名传值,服务端无法识别对应的认证信息。非认证调试场景下可以不携带这类参数,接口默认的无认证调用额度足够日常测试;如果需要正式调用,把Query的键名替换为接口实际支持的$app_token即可,注意Kotlin代码里写$符号需要做转义处理,避免被字符串模板逻辑误解析。
修正后的可运行代码
接口定义:
interface FoodTruckService { @GET("resource/jjew-r69b.json") fun listFoodTruck( @Query("\$app_token") apiKey: String? = null ): Call<Location2> }
单例客户端实现:
object FoodTruckDbClient { private val retrofit = Retrofit.Builder() .baseUrl("https://data.sfgov.org/") .addConverterFactory(GsonConverterFactory.create()) .build() val service = retrofit.create(FoodTruckService::class.java) }
内容的提问来源于stack exchange,提问作者Anel
相关产品推荐
相关产品推荐

