skip to content
Law

Raw JSON body in Retrofit

/ 1 min read

Table of Contents

Raw JSON body in Retrofit

To send a raw JSON body in String format in Retrofit, I found out I need to include scalar library.

scalar = { module = "com.squareup.retrofit2:converter-scalars", version.ref = "retrofit" }

In my ApiHelper class.

import retrofit2.converter.scalars.ScalarsConverterFactory
object ApiHelper {
fun getInstance(): Retrofit =
Retrofit
.Builder()
.baseUrl(baseApi)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(
json.asConverterFactory(contentType),
)
.client(client)
.build()
}

Important stuff to take note is that, ScalarsConverterFactory.create() needs to be called first before the convert factory, or else it won’t work.

So, sending a raw @Body should now work.

@PATCH("profile")
suspend fun updateUserProfile(
@Header("Authorization") accessToken: String,
@Body body: String
): Response<Unit>