Android Retrofit2 Header and Body: an Authentication Example

Help us to keep this website almost Ad Free! It takes only 10 seconds of your time:
> Step 1: Go view our video on YouTube: EF Core Bulk Extensions
> Step 2: And Like the video. BONUS: You can also share it!


The @Header and @Body annotations can be placed into the method signatures and Retrofit will automatically create them based on your models.

public interface MyService {
     Call<AuthenticationResponse> authenticateUser(@Body AuthenticationRequest request, @Header("Authorization") String basicToken);

AuthenticaionRequest is our model, a POJO, containing the information the server requires. For this example, our server wants the client key and secret.

public class AuthenticationRequest {
     String clientKey;
     String clientSecret;

Notice that in @Header("Authorization") we are specifying we are populating the Authorization header. The other headers will be populated automatically since Retrofit can infer what they are based on the type of objects we are sending and expecting in return.

We create our Retrofit service somewhere. We make sure to use HTTPS.

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("https:// some example site")
MyService myService = retrofit.create(MyService.class)

Then we can use our service.

AuthenticationRequest request = new AuthenticationRequest();
String basicToken = "Basic " + token;
myService.authenticateUser(request, basicToken);

Got any Android Question?