2017-01-07 12 views
0

Я пытаюсь создать приложение Weather с помощью Retrofit 2, и теперь я стараюсь правильно настроить вызов.Как правильно установить параметры настройки

Вот URL, который работает:

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

Таким образом, я получил мой ключ API и бейс 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); 

И я получаю ту же ошибку ... Кто-нибудь знает, что здесь дело, что случилось с моим URL?

ответ

3

ли это так:

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

Там нет необходимости ставить вручную Params значения на Модернизированный - вы должны только сказать, это то, что имена параметров

+0

Теперь я получаю эту ошибку: java.lang .IllegalArgumentException: параметр Path не должен появляться после запроса. ... Вы знаете, почему Путь не может прийти после запроса? – joe

+0

Извините, моя ошибка - в запросе должны быть только аннотации Query. Путь используется, когда вы хотите вставить параметр в середине запросов, например, некоторый id: '/ get/users/1/info' - там 1 есть id, а в Retrofit будет использоваться Path (" id "):'/get/users/{id}/info' –

+0

Riiight ... Tnx man! – joe