Android usage

Information for developpers

Project information

The android project is build with : Retrofit. It is the most simple dependance android to access database. We will see the different method on few endpoints. if you doesn’t read the basic usage page, got to previous page.

Methods

  • GET
  • POST
  • PUT
  • DELETE

Authentication

This is an example of authentication on Django-rest-framework API with Retrofit.

@Headers({
    "Content-Type': 'application/x-www-form-urlencoded",
    "Accept: application/json",
})
@POST("authenticate/token/")
@FormUrlEncoded
Call<AccessToken> getAccessToken(
    @Field("grant_type") String grantType,
    @Field("password") String password,
    @Field("username") String username,
    @Field("client_id") String clientId,
    @Field("client_secret") String clientrSecret
);

The response of this call is on the previous previous page. We give few example of request with different method.

GET

@GET("restapi/user/member/")
Call<UserDataContainer> getMemberByEmail(
    @Header("Authorization") String token,
    @Query("email") String email
);

You should pass the acces token in API call every time.

POST

@FormUrlEncoded
@POST("/restapi/beer/beer-list/")
Call<ApiResponse> addBeerWish(
    @Header("Authorization") String token,
    @Field("beer") int beer,
    @Field("member") int member
);

Function call

When you call this function, you should create a callback like that :

Call<AccessToken> accessTokenCall = userService.getAccessToken(
    "password", password, email, client_id, client_secret
);

accessTokenCall.enqueue(new Callback<AccessToken>() {
    @Override
    public void onResponse(Call<AccessToken> call, Response<AccessToken> response) {
        if(response.code() == 200){
            final String accessToken = "Bearer " + response.body().getAccessToken();
            // Behavior if authenticate succeed
        }else{
            // Behavior if authenticate fail
        }
    }
    @Override
    public void onFailure(Call<AccessToken> call, Throwable t) {
        // Behavior the service is unavailable
        Toast.makeText(
            MaltiApplication.getInstance(),
            "Problème d'accès a la base de données", Toast.LENGTH_LONG
        ).show();
    }
});