androiddownloadretrofit

How to download file in Android using Retrofit library?


I need to download all types of file (binary, image, text, etc) using Retrofit library in my app. All the examples on the net is using HTML GET method. I need to use POST to prevent automatic caching.

My question is how to download a file using POST method in Retrofit?


Solution

  • Use @Streaming

    Asynchronous

    EDIT 1

    //On your api interface
    @POST("path/to/your/resource")
    @Streaming
    void apiRequest(Callback<POJO> callback);
    
    restAdapter.apiRequest(new Callback<POJO>() {
            @Override
            public void success(POJO pojo, Response response) {
                try {
                    //you can now get your file in the InputStream
                    InputStream is = response.getBody().in();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            @Override
            public void failure(RetrofitError error) {
    
            }
        });
    

    Synchronous

    //On your api interface
    @POST("path/to/your/resource")
    @Streaming
    Response apiRequest();
    
    Response response = restAdapter.apiRequest();
    
    try {
        //you can now get your file in the InputStream
        InputStream is = response.getBody().in();
    } catch (IOException e) {
        e.printStackTrace();
    }