Moshi + Retrofit с динамическим c API ответом - PullRequest
0 голосов
/ 20 января 2020

Я делаю 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())

...