user3045026 user3045026 - 1 month ago 9
reST (reStructuredText) Question

Retrofit for android @Multipart remove default headers

Making a @Multipart request adds these default headers (Content-Transfer-Encoding, Content-Type) for each part, is there any way to remove them?

//REQUEST BODY
--25d35373-d2c3-46a3-969f-f5a1fd5f781a
Content-Disposition: form-data; name="client_id"
Content-Transfer-Encoding: binary <-- remove this one
Content-Type: application/json; charset=UTF-8 <-- remove this one
Content-Length: 34
"40ccfee680a844780a41fbe23ea89934"
//


NOTE: I do not have access to the server so there is no way I will be able to make the server accept these headers.

Answer

You can build multipart body by your self in this way (kotlin code but same idea may be expressed with java):

val mpart = MultipartBody.Builder()
            .addFormDataPart("param", paramValue)
            .addPart(null, someRequestBody).build() // <-- (*) see explanation below

//thus, service method should looks like this:
@POST("upload/endpoint")
fun upload(@Body parts: MultipartBody)

(*) - this is the addPart(headers: Headers, reqBody: RequestBody) method, when you pass null to headers arg this removes all headers except Content-Length:

Comments