Android - Forecast.io - 改造 - 当 api 不需要参数名称,只需要值时设置查询

Android - Forecast.io - Retrofit - Set query when api doesn't require parameter name, just values

我正在使用 Forecast.io 获取天气。 api url 如下: https://api.forecast.io/forecast/abf7afb3c49204d542b14e8ba282a188/37.8267,-122.423

调用API WeatherAPI.Factory.getmWeatherAPI().getWeather(48.8566,2.3522).enqueue(新回调()

经度和纬度 API url 中不需要名称。

我正在尝试这个,但 Retrofit 似乎添加了特殊字符 -(见下面的屏幕)

@GET("forecast/")
    Call<Weather> getWeather(
            @Query("") Double longitude,
            @Query("") Double latitude);

调用的 URL 会导致 404

非常感谢您的帮助,

首先,您在日志中的 url 是错误的 - 您应该交换 "forecast" 和您的哈希键 "abf7afb3c49204d542b14e8ba282a188",所以我想您应该将 baseUrl 更改为 https://api.forecast.io 例如,当构建一个 Retrofit 对象时。

其次,错误是你使用了@Query注释,但它不是查询,它是url路径的一部分,所以你应该使用@Path注释,你的调用应如下所示(假设您的 baseUrl 是 https://api.forecast.io):

@GET("/forecast/abf7afb3c49204d542b14e8ba282a188/{location}")
Call<Weather> getWeather(@Path("location") String location);

那么您可以通过以下方式使用此方法:

double lat = 48.8566;
double lng = 2.3522;
WeatherAPI.Factory.getmWeatherAPI().getWeather(lat + "," + lng).enqueue(new Callback());