我有一个Model类
data class OtpVerifyModel(
val result: Int? = null,
val msg: String? = null,
val data: Datas? = null)
在响应成功阶段,结果等于1,我们在数据中获得Object,其中如果结果为-1。我们在数据部分得到字符串。我使用data类的数据,但应用程序崩溃的情况下,数据是一个字符串。如何在不同情况下处理同一变量中的两种不同类型的数据?这是我的改造方法
@FormUrlEncoded
@POST("Api/login")
suspend fun verifyOtp(
@Query("height") height: String,
@Query("width") width: String,
@Field("key") key: String,
@Field("type") type: String,
@Field("phone") phone: String,
@Field("email") email: String,
@Field("otp") otp: String,
@Field("country_code") country_code: String,
@Field("country_flag") country_flag: String
): Response<OtpVerifyModel>
您应该有一个基本的API响应,使用泛型类,将不同数据类型的类型作为T,如下所示:
data class ApiResponse<T>(
val data: T?,
val result: Int? = null,
val msg: String? = null,
)
那么你可以有一个成功状态的类:
data class verifyOtp(
val result: String?,
...
)
并将这个类传递给ApiResponse:
@FormUrlEncoded
@POST("Api/login")
suspend fun verifyOtp(
@Query("height") height: String,
@Query("width") width: String,
@Field("key") key: String,
@Field("type") type: String,
@Field("phone") phone: String,
@Field("email") email: String,
@Field("otp") otp: String,
@Field("country_code") country_code: String,
@Field("country_flag") country_flag: String
): Response<ApiResponse<verifyOtp>>
这样,当结果成功时,您的数据将是verifyOtp
。在出现错误的情况下,根据您实现存储库类的方式,您可以解析响应。注意,如果出现错误,API应该返回一个不同于200的状态码,您可以在存储库中解析。