Expand Authors Top

If you have a few years of experience in the Java ecosystem and you’d like to share that with the community, have a look at our Contribution Guidelines.

Expanded Audience – Frontegg – Security (partner)
announcement - icon User management is very complex, when implemented properly. No surprise here.

Not having to roll all of that out manually, but instead integrating a mature, fully-fledged solution - yeah, that makes a lot of sense.
That's basically what Frontegg is - User Management for your application. It's focused on making your app scalable, secure and enjoyable for your users.
From signup to authentication, it supports simple scenarios all the way to complex and custom application logic.

Have a look:

>> Elegant User Management, Tailor-made for B2B SaaS

November Discount Launch 2022 – Top
We’re finally running a Black Friday launch. All Courses are 30% off until end-of-day today:

>> GET ACCESS NOW

November Discount Launch 2022 – TEMP TOP (NPI)
We’re finally running a Black Friday launch. All Courses are 30% off until end-of-day today:

>> GET ACCESS NOW

1. Overview

In this short tutorial, we'll learn how to create a dynamic URL in Retrofit2.

2. @Url Annotation

There are cases when we need to use a dynamic URL in our application during runtime. Version 2 of the Retrofit library introduced the @Url annotation that allows us to pass a complete URL for an endpoint:

@GET
Call<ResponseBody> reposList(@Url String url);

This annotation is based on the HttpUrl class from OkHttp's library, and the URL address is solved like a link on a page using <a href=“”>. When using the @Url parameter, we don't need to specify the address in the @GET annotation.

The @Url parameter replaces our baseUrl from the service implementation:

Retrofit retrofit = new Retrofit.Builder()
  .baseUrl("https://api.github.com/")
  .addConverterFactory(GsonConverterFactory.create()).build();

What is important is that if we want to use the @Url annotation, it must be set as the first parameter in the service method.

3. Path Param

If we know that some part of our base URL will be constant, but we don't know the extension of it or the number of parameters that will be used, we can use the @Path annotation and the encoded flag:

@GET("{fullUrl}")
Call<List<Contributor>> contributorsList(@Path(value = "fullUrl", encoded = true) String fullUrl);

This way, all “/” won't be replaced by %2F, as if we had not used the encoded parameter. However, all characters “?” in the passed address still will be replaced by %3F.

4. Summary

The Retrofit library allows us to easily provide a dynamic URL during application runtime by using only the @Url annotation.

As usual, all code examples can be found over on GitHub.

November Discount Launch 2022 – Bottom
We’re finally running a Black Friday launch. All Courses are 30% off until end-of-day today:

>> GET ACCESS NOW

HTTPClient footer
Comments are closed on this article!