无法调用 Retrofit2.Call 的无参数构造函数

2024-02-13

我有以下改造单例:

interface MyAPI
{
    @GET("/data.json")
    suspend fun fetchData() : Call<MyResponse>

    companion object
    {
        private val BASE_URL = "http://10.0.2.2:8080/"

        fun create(): MyAPI
        {
            val gson = GsonBuilder()
                .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
                .create()

            val retrofit = Retrofit.Builder()
                .addConverterFactory( GsonConverterFactory.create( gson ) )
                .baseUrl( BASE_URL )
                .build()

            return retrofit.create( MyAPI::class.java )
        }
    }
}

我的响应.kt

data class MyResponse(
    val listOfData: List<DataEntity>
)

数据实体.kt

data class DataEntity(
    @SerializedName("name")
    val fullName: String
}

我通过以下方式从 ModelView 调用代码:

viewModelScope.launch {
    try {
        val webResponse = MyAPI.create().fetchData().await()
        Log.d( tag, webResponse.toString() )
    }
    catch ( e : Exception )
    {
        Log.d( tag, "Exception: " + e.message )
    }
}

但我不断得到:

Unable to invoke no-args constructor for retrofit2.Call<com.host.myproject.net.response.MyResponse>. Registering an InstanceCreator with Gson for this type may fix this problem.

我似乎找不到这个问题的解决方案..有什么提示吗?

EDIT:

JSON 响应:

[
    {
    "name": "A"
    },
    {
    "name": "B"
    },
    {
    "name": "C"
    }
]

问题是你尝试结合suspend with a Call<T>返回类型。当你使用suspend你应该让 Retrofit 函数直接返回数据,如下所示:

suspend fun fetchData() : List<DataEntity> // Note: Not MyResponse, see below

然后你所要做的就是删除.await()当你打电话时,像这样:

// Will throw exception unless HTTP 2xx is returned
val webResponse = MyAPI.create().fetchData()

请注意,您不应该使用MyResponse因为 JSON 直接返回一个数组,所以根本不需要类。

Update:

您还可以使用Response<DataEntity>如果您需要标题中的信息

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法调用 Retrofit2.Call 的无参数构造函数 的相关文章

随机推荐

  • 如何在Ubuntu上使用gem安装Rails

    错误信息 Building native extensions This could take a while ERROR Error installing rails ERROR Failed to build gem native ex
  • intellij 构建包含 gradle 依赖项的 jar 工件

    我基本上想做一些简单的事情 或者至少我认为它应该非常简单 我的目标是创建一个 Intellij gradle 项目 使用 gradle 向模块添加一些依赖项 并向其中添加一些 java 源代码 然后我只想有一个选项以某种方式将整个东西编译成
  • 如何使用包database/sql批处理sql语句

    如何使用Go的database sql包批处理sql语句 在Java中我会这样做 Create a prepared statement String sql INSERT INTO my table VALUES PreparedStat
  • Dagger 和 libgdx

    可以使用 dagger 2 和 libgdx web 吗 libgdx 项目可以在 Android 和桌面上正常构建 当我添加一个网络模块并运行时 gradlew html superDev ERROR Line 1 The type ja
  • 您可以在不使用 API 的情况下获得 MailChimp 兴趣组 ID 吗?

    使用 MailChimp API 要将成员添加到具有特定兴趣组的列表 您需要该列表的 ID 和兴趣组的 ID 要获取这两个 ID 您可以查询 API 来获取它们 或者对于列表 ID 您可以在 MailChimp 接口输出的表单代码中找到它
  • JSTL中如何获取随机数?

    我想要得到类似于 JSTL 中生成的下一个代码的内容
  • 当无法访问服务器时,PHP 的 PDO 会忽略 MySQL 的 ATTR_TIMEOUT 选项

    我正在测试无法通过输入随机 IP 尝试连接来访问 mysql 服务器的场景 我将 PDO 的选项设置为在一秒后超时PDO ATTR TIMEOUT gt 1 然而 抛出异常仍然需要30秒 我猜这个超时仅适用于实际的 mysql 连接时间 而
  • HTML5 应用程序缓存相关吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Powershell 脚本查找并更改 Word 中的超链接,保存文档并创建 PDF 格式的新副本

    我试图弄清楚如何编写一个脚本来遍历一个文件夹并抓取该文件夹中的所有Word文档以搜索超链接并将链接更改为另一个链接 然后保存该 Word 文档并创建其另一个版本 将其转换为 pdf 如何调整下面的脚本以获取文件夹中的所有 Word 文档 然
  • ABRecordCopyValue() EXC_BAD_ACCESS 错误

    在我的应用程序中 我必须检索用户联系人的某些属性 例如 我需要检索联系人的名字 姓氏 中间名 昵称 组织 职位 部门 生日 电子邮件等 我有一些方法来检索这些属性 但只有几个方法可以工作 尽管它们都很相似 这是我的代码 其中一种方法有效 名
  • 将变量传递给 AngularJS 控制器,最佳实践?

    我是全新的AngularJS http angularjs org就像我到目前为止所看到的那样 尤其是模型 视图绑定 我想利用它来构建一个简单的 添加到购物篮 功能 到目前为止 这是我的控制器 function BasketControll
  • Google Apps 脚本从 Gmail 中提取数据并填写 Google 表格中的多个匹配行

    继续从Google Apps 脚本从 Gmail 中提取数据并填写 Google 表格中的匹配行 https stackoverflow com questions 69309206 google apps script to extrac
  • SQL 编号列 - MySQL

    这是一个sql新手问题 基本上 我想要一个额外的列与我的 select 语句一起返回来对行进行编号 我正在使用mysql Eg select from friends David Steve Joe 获取的语法是什么 1 David 2 S
  • Backbone.js 更新集合中的模型

    假设您正在使用 Backbone js 构建 Twitter 克隆 您有一组推文 每条推文显然都是推文模型的一个实例 您创建该集合的一个实例 获取最新的 10 条推文 渲染它们并添加到 DOM 到目前为止 一切都很好 如果您想在几分钟后调用
  • 为 Jetty 启用 SSL 会话以加速 HTTPS 请求

    这是我的问题的后续here https stackoverflow com q 13048802 194609 我发现 HTTPS 与 HTTP 请求的查询时间差异很大 到服务器的距离越大 这种差异就越大 我找到了一个很好的解释 http
  • 为本地开发创建不同的 eslint 规则

    这是一个激励人心的例子 我正在开发一些代码并想找出出了什么问题 所以我有 function foo console log Look its 2016 and I m still printf debugging 除了 我们的构建过程将 e
  • Google 应用程序脚本 - MySql 8 - JDBC 连接失败

    我正在尝试使用 Google AdWords 脚本 实际上是应用程序脚本 连接到自托管的 MySql 8 实例Jdbc通过 SSL 的实用程序 我的代码遵循这些答案中的规范here https stackoverflow com quest
  • jQuery Mobile Beta:无法再使用 $('[data-role=header]')?

    我曾经能够抓住 data role header first height 在 jQuery 1 5 2 的 alpha 版本中可用 但在 jQuery 1 6 1 的 beta 版本中不再可用 有什么改变吗 完整代码 这会将 0 写入 c
  • PDF 附件正在更改为不可用的 DAT 文件 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个系统 它是一个内部解决方案 试图通过电子邮件将发票发送给客户 该系统运行良好 只是一个客户端获取的是 dat 文件 而不是其他人获取的精心生成
  • 无法调用 Retrofit2.Call 的无参数构造函数

    我有以下改造单例 interface MyAPI GET data json suspend fun fetchData Call