POST API 响应在 Android 客户端中触发 onFailure,尽管在 Postman 中工作

问题描述 投票:0回答:1

在最近的一个项目中,我使用 Kotlin 和 Retrofit 开发了一个 Android 客户端,与使用 Spring Boot 构建的微服务进行通信,该微服务通过 JDBC 连接到 MS SQL Server 数据库。客户端将令牌和 bodyRequest 作为输入参数发送到 POST API,并期望接收由两个字符串 (String) 和一个整数 (Int) 组成的对象。当使用 Postman 测试 API 时,我能够得到预期的响应,其中包括两个字符串和一个整数。然而,当我在 Android 客户端中实现相同的 API 调用时,响应从未进入 onSuccess 块,而是始终落入 onFailure 块。

邮递员回复

{
"codigoRespuesta":"00",
"mensajeRespuesta":"CORRECTO",
"idTransaccion":2371623456182
}

数据类(Kotlin)

data class Response(
@serializedName("codigoRespuesta") val codigoRespuesta: String,
@serializedName("mensajeRespuesta") val mensajeRespuesta: String,
@serializedName("idTransaccion") val idTransaccion: Int
)
spring-boot postman retrofit mssql-jdbc kotlin-android
1个回答
0
投票

经过广泛调查,我发现问题是由于使用的数据类型造成的。在 Kotlin 中,Int 类型有 32 位限制,最多可以表示 2,147,483,647(10 位数字)的值。然而,从服务器收到的整数有 13 位,超出了这个限制。

修复

我将响应类中的数据类型从 Int 更改为 Long(最多支持 64 位)。这解决了问题,客户端开始成功处理响应。

© www.soinside.com 2019 - 2024. All rights reserved.