How to upload file with retrofit 2

16 April 2019 on Android.

For uploading files to server with Retrofit 2 using octet-stream content type

Web Service

@POST
@Path("/uploadFile")
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
public Response uploadFile(@Context HttpServletRequest request,InputStream fileInputStream) {

Android

@POST("uploadFile")
@Headers( {"Content-Type: application/octet-stream"})
Call<JsonObject> uploadFile(@Body RequestBody fileInputStream);

Usage

File file = new File(document.getPath());
byte[] byteArray = IOUtils.toByteArray(new FileInputStream(file));
RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"), byteArray);
Response<JsonObject> answer = restClient.getService().uploadFile(requestBody).execute();
if (answer.isSuccessful()) {
    
}