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());
.......
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
);
}