首页 > 解决方案 > 如何在 kotlin 中调试生成的 API - responseBody 仅支持 JSON 正文错误

问题描述

我正在尝试向我的应用程序发送一个文本片段,并且我正在使用 OpenApi 生成的库。这是我遇到问题的功能:

protected inline fun <reified T: Any?> responseBody(body: ResponseBody?, mediaType: String? = JsonMediaType): T? {
    if(body == null) {
        return null
    }
    println("INSIDE responseBODY $body")
    val bodyContent = body.string()
    println("bodyContent $bodyContent")
    if (bodyContent.isEmpty()) {
        return null
    }
    println("mediaType $mediaType")
    val jsonBodyContent = JSONObject(bodyContent)
    println("JSON BodyConent $jsonBodyContent")
    return when(mediaType) {
        JsonMediaType -> {
            println("Serializer ")
            println(Serializer.moshi.adapter(T::class.java).fromJson(bodyContent))
            Serializer.moshi.adapter(T::class.java).fromJson(bodyContent)
        }
        else ->  throw UnsupportedOperationException("responseBody currently only supports JSON body.")
    }
}

控制台日志如下:

bodyContent {"os":"7c8092ef-74cd-4fda-b24e-804d975788a3","application":{"id":"4f789733-eef7-465b-a5d3-680329fb5f80","name":"JETBRAINS","version":"1.0.0","platform":"MACOS","onboarded":false}}
mediaType text/plain
JSON BodyConent {"os":"7c8092ef-74cd-4fda-b24e-804d975788a3","application":{"onboarded":false,"name":"JETBRAINS","id":"4f789733-eef7-465b-a5d3-680329fb5f80","version":"1.0.0","platform":"MACOS"}}
2021-09-27 15:09:55,971 [ 108564] 
ERROR - llij.ide.plugins.PluginManager - responseBody currently only supports JSON body.

我不确定如何将其转换bodyContent为 JSON(如果我什至应该这样做?)。它确实看起来像 JSON,但它mediaTypetext/plain. 有小费吗?

标签: jsonkotlinopenapimoshi

解决方案


推荐阅读