Я делаю 2 последовательных вызова API, где ответ от api1
является проходом к post body
из api2
.
Ответ api1
является динамическим c и содержит null
значений, как это происходит с другого сервера аутентификации.
Мои интерфейсы и компоновщик Retrofit выглядят так:
@GET()
suspend fun getAPI1Data(@Url idUrl:String): Map<String, @JvmSuppressWildcards Any?>
@POST("/validate")
suspend fun postToAPI2(@Body tester: Map<String, @JvmSuppressWildcards Any?>): User
val retroClient = Retrofit.Builder()
.client(client)
.baseUrl("https://base.com")
.addConverterFactory(MoshiConverterFactory.create().withNullSerialization())
.build();
Как принять во внимание динамический c характер ответа api1
. Поскольку нет предопределенной структуры pojo к нему. В настоящее время я использую Map<String, Any?>
с @JvmSuppressWildcards
, чтобы обойти ошибку Parameter type must not include a type variable or wildcard
?
Примечание: Мне удалось выполнить аналогичный поток данных с помощью преобразователя Gson, где я отметил Ответ api1 как JsonObject
вместо Map<String, Any>
и создал мое обновление с .addConverterFactory(GsonConverterFactory.create(GsonBuilder().serializeNulls().create())