1

我正在尝试使用 Retrofit 2 创建天气应用程序,现在我很难正确设置呼叫。

这是有效的 URL:

http://api.openweathermap.org/data/2.5/weather?q=London&APPID=MY_API_KEY

所以,我有我的 API 密钥和 BASE URL 是:http ://api.openweathermap.org .. 这是我改造服务中的方法:

    @GET("/data/2.5/weather?q={city}/&APPID={api}")
    Observable<WeatherResponse> getWeather(@Path("city") String city, @Path("api") String api);

我得到的错误是:

java.lang.IllegalArgumentException:URL 查询字符串“q={city}/&APPID={api}”不能有替换块。对于动态查询参数,使用@Query。

所以我尝试这样:

@GET("/data/2.5/weather?{city}/&APPID={api}")
Observable<WeatherResponse> getWeather(@Query("city") String city, @Path("api") String api);

我得到了同样的错误......任何人都知道这里有什么问题,我的网址有什么问题?

4

1 回答 1

8

这样做:

@GET("/data/2.5/weather")
Observable<WeatherResponse> getWeather(@Query("q") String city, @Query("APPID") String api);

无需手动将参数值放入 Retrofit - 您只需告诉它参数名称是什么

于 2017-01-07T14:28:39.720 回答