Dynami c параметры запроса Модернизация - PullRequest
0 голосов
/ 24 апреля 2020

Здравствуйте, я делаю первые шаги inRetrofit, я хочу динамически изменить этот URL || (ДОМЕН) .com / Program / v7 / Programs / NowAndNextLiveChannelPrograms? UserAgent = AND & $ filter = CallLetter% 20eq% 20% 27 FOX % 27 & $ orderby = StartDate% 20as c || Так что я могу сменить канал в этом случае на FOX.

это мой GET

   @GET("Program/v7/Programs/NowAndNextLiveChannelPrograms?UserAgent=AND&$filter=CallLetter%20eq%20%27SIC%27&$orderby=StartDate%20asc")
    Call<EPGResponse> getEPG(@Query("???")  ???  );

CALL

   DataService canaisDataService = RetrofitInstance.getRetrofitInstance();

        Call<EPGResponse> call = canaisDataService.getEPG("PASS CHANNEL FORM LIST");
        call.enqueue(new Callback<EPGResponse>() {
            @Override
            public void onResponse(Call<EPGResponse> call, Response<EPGResponse> response) {
                 epgResponse = response.body();

                if (epgResponse !=null && epgResponse.getValue() != null){

                    epgValueList = epgResponse.getValue();
                    mutableLiveDataEPG.setValue(epgValueList);

                }
            }

спасибо

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Сначала создайте URL-адрес с параметром запроса, например,

String url = "(DOMAIN).com/Program/v7/Programs/NowAndNextLiveChannelPrograms?UserAgent=AND&$filter=CallLetter%20eq%20%27SIC%27&$orderby=StartDate%20asc"

Затем передайте URL-адрес в getEPG () APIService, например,

 DataService canaisDataService = RetrofitInstance.getRetrofitInstance();

        Call<EPGResponse> call = canaisDataService.getEPG(url);
        call.enqueue(new Callback<EPGResponse>() {
            @Override
            public void onResponse(Call<EPGResponse> call, Response<EPGResponse> response) {
                 epgResponse = response.body();

                if (epgResponse !=null && epgResponse.getValue() != null){

                    epgValueList = epgResponse.getValue();
                    mutableLiveDataEPG.setValue(epgValueList);

                }
            }

.

public interface APIService {
    @GET
    Call<EPGResponse> getEPG(@Url String url);
}

если вы хотите передать параметр запроса, вы также можете добавить @Query после @Url следующим образом:

 public interface APIService {
        @GET
        Call<EPGResponse> getEPG(@Url String url,@Query("parameter") String parameter) ;
    }
0 голосов
/ 24 апреля 2020

Вы можете передать все URL (вместе с запросом) по String, но вам нужно создать их перед вызовом:

public interface APIService {
    @GET
    Call<EPGResponse> getEPG(@Url String url);
}
...