Search code examples
androidretrofitretrofit2square

How can I handle empty response body with Retrofit 2?


Recently I started using Retrofit 2 and I faced an issue with parsing empty response body. I have a server which responds only with http code without any content inside the response body.

How can I handle only meta information about server response (headers, status code etc)?


Solution

  • Edit:

    As Jake Wharton points out,

    @GET("/path/to/get")
    Call<Void> getMyData(/* your args here */);
    

    is the best way to go versus my original response --

    You can just return a ResponseBody, which will bypass parsing the response.

    @GET("/path/to/get")
    Call<ResponseBody> getMyData(/* your args here */);
    

    Then in your call,

    Call<ResponseBody> dataCall = myApi.getMyData();
    dataCall.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Response<ResponseBody> response) {
            // use response.code, response.headers, etc.
        }
    
        @Override
        public void onFailure(Throwable t) {
            // handle failure
        }
    });