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());
我正在使用 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());