С помощью Retrofit 2 вы можете установить полный URL-адрес в аннотации метода службы, например:
public interface APIService {
@GET("http://api.mysite.com/user/list")
Call<Users> getUsers();
}
Однако в моем приложении URL-адрес моих веб-сервисов не известен во время компиляции, приложение извлекает их в загруженный файл, поэтому мне интересно, как я могу использовать Retrofit 2 с полным динамическим URL-адресом.
Я попытался установить полный путь, как:
public interface APIService {
@GET("{fullUrl}")
Call<Users> getUsers(@Path("fullUrl") fullUrl);
}
new Retrofit.Builder()
.baseUrl("http://api.mysite.com/")
.build()
.create(APIService.class)
.getUsers("http://api.mysite.com/user/list"); // this url should be dynamic
.execute();
Но здесь Retrofit не видит, что путь на самом деле является полным URL, и пытается загрузить http://api.mysite.com/http%3A%2F%2Fapi.mysite.com%2Fuser%2Flist
Любой намек на то, как я мог бы использовать Retrofit с таким динамическим URL?
Спасибо
Ответы:
Я думаю, что вы используете это неправильно. Вот выдержка из журнала изменений :
Итак, ваш интерфейс должен быть таким:
источник
Я хотел заменить только часть URL, и с этим решением мне не нужно передавать весь URL, только динамическую часть:
источник
Вы можете использовать закодированный флаг на
@Path
аннотации:/
с%2F
.?
замены%3F
, поэтому вы все равно не сможете передать строки динамического запроса.источник
Начиная с Retrofit 2.0.0-beta2, если у вас есть служба, отвечающая на JSON с этого URL: http: // myhost / mypath
Следующее не работает:
Но это нормально
источник
Вы можете использовать это:
Для получения дополнительной информации см. Документацию https://square.github.io/retrofit/
источник
Шаг 1
Шаг 2 Для лучшей практики определите класс для модифицированного экземпляра:
} Шаг-3 определите в своей деятельности: -
источник
Библиотека RetrofitHelper, написанная на kotlin, позволит вам выполнять вызовы API, используя несколько строк кода, и вы можете использовать разные URL, заголовки и параметры в каждом вызове.
Добавьте несколько URL-адресов в ваш класс приложения, например:
А затем используйте URL, который вам нужен в вашем звонке:
Для получения дополнительной информации см. Документацию
источник
Динамический URL с методом Get и Post в Retrofit (MVVM)
Интерфейс сервисного обслуживания:
Класс обслуживания MVVM:
и Retrofit Client class
Например, это URL: https://gethelp.wildapricot.com/en/articles/549-changing-your
baseURL: https://gethelp.wildapricot.com
Оставшийся @Url: / en / article / 549-changeing your (который вы проходите в ретро-классе обслуживания)
источник
источник
Если вы уже настроили свой код и не хотите вносить изменения в различные интерфейсы, которые можете, используйте решение, описанное в этой ссылке . Основным моментом является метод,
changeApiBaseUrl
который обновляет URL и воссоздает конструктор Retrofit.Вы можете использовать его следующим образом:
источник