Как передать несколько значений в одном запросе на модернизацию

#android #kotlin #retrofit2 #rx-java2

#Android #kotlin #retrofit2 #rx-java2

Вопрос:

Я использую Retrofit2 и RxJava в своем приложении. Я должен передать несколько значений, соответствующих одному ключу. Ниже приведен URL-адрес моего запроса

 https://api.openweathermap.org/data/2.5/onecall?lat=28.46amp;lon=77.03amp;exclude=hourly,alerts,minutelyamp;appid=01s
  

Теперь в приведенном выше URL-адресе есть ключ исключения, в котором передается несколько параметров, как добавить их в мой интерфейс. Ниже приведен мой интерфейс.

ApiService.class

 interface ApiService {

@GET("data/2.5/onecall")
fun getCurrenttemp(@Query("lat") lat:String,
                   @Query("lon") lon:String,
                   @Query("exclude") exclude:String,
                   @Query("appid") appid:String):Observable<Climate>

}
  

Как я могу сделать желаемый запрос?

Ответ №1:

Как exclude говорится в части параметров в документации One Call API,

Используя этот параметр, вы можете исключить некоторые части данных о погоде из ответа API. Это должен быть список, разделенный запятыми (без пробелов).

Таким образом, он не запрашивает несколько значений, это скорее одно строковое значение с разделенными запятыми тегами опций без пробелов между ними. Просто поместите « hourly,alerts,minutely » в строковую переменную и передайте эту строку, как у вас уже есть в следующей строке кода, @Query("exclude") exclude:String , через ваш интерфейс, и она должна работать:

 var excludeParamToPass = "hourly,alerts,minutely"
  

Один пример API из той же ссылки:

 https://api.openweathermap.org/data/2.5/onecall?lat=33.441792amp;lon=-94.037689amp;exclude=hourly,dailyamp;appid={API key}