기타

[Android Studio] Retrofit2 Body에 null value 보내기

개발_블로그 2023. 9. 11. 11:16
반응형

 

레트로핏을 사용하다 보면 아래의 예처럼  @body 안에  null value를 보내야 할 때가 있다. 

하지만 이렇게 서버에 보냈는데도 불구하고 데이터가 null 이어서 아에 안보내줄 때가 있다.

이 때에는 Retrofit.Builder() 설정을 바꾸어 주면 된다. 

@POST("url")
suspend fun create(
    @Header("Authorization") token: String,
    @Body BodyDto: BodyDto,
): Response<ResponseDataDto<Dto>>
data class Dto(
    @SerializedName("message")
    val message: String?,
)

 

 

Builder 부분을 

Retrofit.Builder()
    .baseUrl(httpUrl)
    .client(client)
    .addConverterFactory(GsonConverterFactory.create())
    .addCallAdapterFactory(CoroutineCallAdapterFactory())
    .addCallAdapterFactory(RxJava3CallAdapterFactory.create())
    .build()
    .create(service)

 

 

아래와 같이 바꿔주면 된다. 

 .addConverterFactory(GsonConverterFactory.create(GsonBuilder().serializeNulls().create()))

Retrofit.Builder()
    .baseUrl(httpUrl)
    .client(client)
    .addConverterFactory(GsonConverterFactory.create(GsonBuilder().serializeNulls().create()))
    .addCallAdapterFactory(CoroutineCallAdapterFactory())
    .addCallAdapterFactory(RxJava3CallAdapterFactory.create())
    .build()
    .create(service)
반응형