我有以下界面
interface OpenWeatherApi {
@GET("weather?lat={lat}&lon={lon}&appid=" + Constants.OPEN_WEATHER_API_KEY)
suspend fun currentWeatherDetails(
@Path("lat") lat: String,
@Path("lon") lon: String
): Response<CurrentWeatherResponseSchema>
}
我正在使用以下依赖项
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.8.1'
我正在使用的Base_Url如下:
const val BASE_URL = "https://api.openweathermap.org/data/2.5/"
但是,当我测试代码时,出现以下代码错误
java.lang.IllegalArgumentException:URL查询字符串“ lat = {lat}&lon = {lon}&appid = 5838e6161f0e347a9641f80bc0c8”必须没有替换块。对于动态查询参数,请使用@Query。用于方法OpenWeatherApi.currentWeatherDetails
我没有显示原始密钥,但是即使使用相同的调用,我也会遇到相同的错误
原始的url或api调用应该看起来像下面的项目:
api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={API key}
我尝试将@Path更改为@Query,但仍然收到相同的错误消息
下图是邮递员的测试,它似乎可以工作:
我只复制了邮递员的网址,并在代码中进行了必要的更改,但我不断收到相同的错误代码
更换:
@GET("weather?lat={lat}&lon={lon}&appid=" + Constants.OPEN_WEATHER_API_KEY)
与:
@GET("weather?appid=" + Constants.OPEN_WEATHER_API_KEY)
然后,替换:
@Path("lat") lat: String,
@Path("lon") lon: String
与:
@Query("lat") lat: String,
@Query("lon") lon: String
您可能还需要移动appid
的出来@GET
,进入一个@Query
,但我认为这是确定的@GET
,当它是一个常数。
请参阅改造文档的“ URL操作”部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句