У меня проблемы с публикацией данных с помощью преобразователя Джексона. Тело запроса всегда пусто.
Вот мой код. Метод вызова:
@POST("mood")
fun getMoods(@Body body: MoodsRequestBody): Call<List<String>>
Запросить класс кузова:
internal data class MoodsRequestBody(val userId: String, val thought: String)
Экземпляр API:
private val client = OkHttpClient.Builder()
.apply {
if (BuildConfig.DEBUG) addInterceptor(CurlLoggingInterceptor())
}
.build()
private val mapper = jacksonObjectMapper()
.disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES,
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.enable(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT,
DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
private val retrofit = Retrofit.Builder()
.baseUrl("http://<base url here>")
.client(client)
.addConverterFactory(JacksonConverterFactory.create(mapper))
.build()
private val api: Api = retrofit.create(Api::class.java)
А вот лок, который я получаю в журнале:
curl -X POST --data $'{}' "http://<base url here>/mood"
Как видите, тело запроса пусто. Я думаю, что это не становится сериализованным. Пожалуйста, помогите.