Android Retrofit 2 - GET - error: element value must be a constant expression

Android Retrofit 2 - GET - error: element value must be a constant expression

Ahoj,

mám ve své android aplikaci nastaven GET pro Retrofit2 takto:


@GET(Constants.API_URL + Constants.TYPE)
Call> getApiDatas(@Header("X-AUTH-TOKEN") String token);
.......
Call> call = APIService.getApiDatas(Constants.TOKEN_KEY);
.......


A to funguje. Já však potřebuji do GET dostat dynamickou URL adresu.

Pokud místo statických final proměnných (public static final String)
@GET(Constants.API_URL + Constants.TYPE)

Použiji nestatickou proměnnou zde přes class Variables:
@GET(Constants.API_URL + Constants.TYPE)

Tak dostanu chybu:

error: element value must be a constant expression

@GET(Constants.API_URL + Variables.getType())


Můžete mně někdo poradit, jak do URL GET pro Retrofit2 v Android Studio dostat proměnnou pro dynamickou URL?

Díky

ODPOVĚĎ


Ahoj,

pokud v Android Studio potřebuješ pro android aplikaci využívající Retrofit2 do GET dostat nestatickou proměnnou pro dynamickou URL, tak to udělej takto, funguje to!


@GET
Call> getApiDatas(@Header("X-AUTH-TOKEN") String token, @Url String url);
.......
Call> call = APIService.getApiDatas(Constants.TOKEN_KEY, Constants.TYPE + Variables.getType());
.......
Show english version

Komentáře

Vaše reakce na Android Retrofit 2 - GET - error: element value must be a constant expression
OL3G
#1919

11.06.2024 [1]
Poslední komentář
Ahoj,

dodatek - jak lze posílat requesty když používáme android retrofit a chceme do url předávat dynamicky parametry.

Endpoint má třeba tento tvar a chceme dynamicky dodávat param "barcode" :
http://192.168.35.205:8001/api/endpoint/get?barcode=B0002

1.) předávání parametrů "barcode=B0002" přes anotaci
-----------
String endpoint = Constants.URL+"endpoint/get";
Call<List<ApiData>> call = APIService.getApiDatas(endpoint, auth, Constants.TOKEN_KEY, code);

interface APIService {
@GET
Call<List<ApiData>> getApiDatas(
@Url String url,
@Header("Authorization") String auth,
@Header("X-AUTH-TOKEN") String token,
@Query("barcode") String barcode
);
}


2.) předávání parametrů "barcode=B0002" už rovnou v názvu endpointu (string)
------------
String endpoint = Constants.URL+"endpoint/get?barcode="+code;
Call<List<ApiData>> call = APIService.getApiDatas(endpoint, auth, Constants.TOKEN_KEY);

interface APIService {
@GET
Call<List<ApiData>> getApiDatas(
@Url String url,
@Header("Authorization") String auth,
@Header("X-AUTH-TOKEN") String token
);
}

Související obsah

android

linux

ubuntu

programovani

android-studio

java

Reference

Podívejte se na naše reference

Prohlédnout

Aplikace

Podívejte se na naše aplikace

Prohlédnout

Co umíme?

Podívejte se co umíme

Prohlédnout

Co umíme?

Vytváříme sofistikované aplikace pro náročné

Od webových aplikací přes android až po převodové můstky či složité informační systémy.

Podívejte se k nám

Máte ještě čas? Podívejte se na další rubriky

Tento web používá soubory cookie. Dalším procházením tohoto webu vyjadřujete souhlas s jejich používáním.. Více informací zde.