java.lang.IllegalArgumentException:URL查询字符串对于动态查询参数,请使用@Query。用于方法OpenWeatherApi.currentWeatherDetails

乔治

我有以下界面

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章