Using Retrofit to upload file and some data on server in Android App.

During my recent project, I utilized the Retrofit library in my App to efficiently handle file uploads alongside additional data fields. While implementing this functionality, I encountered some challenges that I want to share with you.

I would like to begin with Retrofit library, Retrofit is a popular Android library used for making HTTP requests and handling RESTful APIs effortlessly. It simplifies the process of network communication by converting HTTP endpoints into Java interfaces with annotation-based configuration.

Consider we have to implement a code to upload file on server using Java Firstly we need to create a Retrofit client. Create a java file named “UploadFileInstance” : —

public class UploadFileInstance {
    public static String BASE_URL_UPLOAD = "https://xyz.com/";

    static Retrofit getRetrofit() {
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(loggingInterceptor)
                .build();

        return new Retrofit.Builder()
                .client(client)
                .baseUrl(UploadFileInstance.BASE_URL_UPLOAD)
                .addConverterFactory(ScalarsConverterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
}

This class returns Retrofit client

Assume we send content-type and size along with file. Now, create an interface named “UploadFileInterface”

Visit Now