#android #kotlin #retrofit
#Android #kotlin #модернизация
Вопрос:
У меня есть этот код :
package com.example.finalv2.networking
import retrofit2.Call
import retrofit2.http.GET
import com.example.finalv2.it1
private var argument: String = it1
interface RetrofitAPI {
@GET(argument)
fun getInformations(): Call<ArrayList<Information>>
}
И я хочу использовать свой аргумент var, но для модификации требуется const. Как это сделать?
Комментарии:
1. Параметры аннотаций должны быть константами времени компиляции. Это не доработка, это компилятор kotlin. Если вам нужно выполнить GET по URL-адресу, который вы узнаете только во время компиляции, вы не можете использовать Retrofit . Вы можете придерживаться OkHttp
Ответ №1:
Значения аннотаций разрешаются статически, что означает, что они должны быть постоянными. Вы можете передать URL-адрес аргумента переменной, используя @Url
аннотацию для аргумента функции.
interface RetrofitAPI {
@GET
fun getInformations(@Url url: String): Call<ArrayList<Information>>
}
Ответ №2:
Вы можете сделать это, добавив параметр аннотации @Path в вызов функции следующим образом:
@GET("/image/{argument}")
fun getInformations(@Path("argument") argument: String): Call<ArrayList<Information>>
Например, если функция вызывается как:
getInformations("abc")
конечный URL-адрес, на который будет отправлен запрос, должен быть
BASE_URL "/image/abc"
Чтобы узнать больше, ознакомьтесь с этой официальной веб-страницей документации,
https://square.github.io/retrofit/2.x/retrofit/index.html?retrofit2/http/Path.html