Android 如何在改造(Kotlin)中获得响应状态?

Android 如何在改造(Kotlin)中获得响应状态?,android,kotlin,retrofit,Android,Kotlin,Retrofit,我正在使用改装。使用Kotlin。我需要知道反应状态代码。大概是200还是500。我如何从回复中得到它 我的Api类: interface Api { @POST("user/code/check") fun checkSmsCode(@Body body: CheckCodeBody): Single<Response<Void>> } 据我所知,在Java中这是一件容易的事 您只需使用response.code()或类似的东西,就可以了。但如何在科特

我正在使用改装。使用Kotlin。我需要知道反应状态代码。大概是200还是500。我如何从回复中得到它

我的Api类:

interface Api {
    @POST("user/code/check")
    fun checkSmsCode(@Body body: CheckCodeBody): Single<Response<Void>> }
据我所知,在Java中这是一件容易的事


您只需使用
response.code()
或类似的东西,就可以了。但如何在科特林实现这一目标

那么您的on响应应该是这样的

      override fun onResponse(call: Call<MyModel>?, response: Response<MyModel>?) {
           //
      }
 })
override-fun-onResponse(调用:调用?,响应:响应?){
//
}
})
那么在这里面你应该能够做到

      override fun onResponse(call: Call<MyModel>?, response: Response<MyModel>?) {
           response.code()
      }
 })
override-fun-onResponse(调用:调用?,响应:响应?){
响应代码()
}
})

这就是您所说的吗?

如果您没有将改装请求方法配置为返回
响应,您将无法获得响应代码。例如:

interface SomeApi{
 @POST("user/code/check")
fun checkSmsCode(@Body body: CheckCodeBody): Single<Response<String>> 
}
你需要使用它

interface OnlineStoreService{

    @Headers("Content-Type: application/json","Connection: close")
    @POST
    fun getDevices(
            @Url url: String,
            @Header("Authorization") token: String,
            @Body apiParams: APIParams
    ): Observable<OnlineStoresInfo>

} 


.subscribe({ onlineStoresInfo ->   // or it -> where "it" it's your object response, in this case is my class OnlineStoresInfo

                    loading.value = false
                    devices.value = onlineStoresInfo.devices

                }, { throwable ->
                    Log.e(this.javaClass.simpleName, "Error getDevices ", throwable)
                    loading.value = false
                    error.value = context.getString(R.string.error_information_default_html)
                })

.subscribe({ it -> 
// code
}, { throwable ->
 //code
})
接口在线存储服务{
@标题(“内容类型:application/json”,“连接:close”)
@职位
娱乐设备(
@Url:String,
@标头(“授权”)标记:字符串,
@主体apiParams:apiParams
):可见
} 
.subscribe({onlineStoresInfo->//或it->其中“it”是您的对象响应,在本例中是我的类onlineStoresInfo
loading.value=false
devices.value=在线存储info.devices
},{可丢弃->
Log.e(this.javaClass.simpleName,“Error getDevices”,可丢弃)
loading.value=false
error.value=context.getString(R.string.error\u信息\u默认值\u html)
})
.订阅({it->
//代码
},{可丢弃->
//代码
})

但如何在Kotlin中实现它?
改造是一个Java库,Kotlin与Java互操作;因此,您需要做与Java完全相同的事情。事实证明,你无法从Kotlin访问这些内容。我不知道如何实现它。您可能可以使用
it
word,确切地说,
it.code()
访问它。@r2rek它不起作用。您如何定义
checksCode
?编辑了问题。先生,请看一看!编辑了这个问题。请看一看,先生!。将
Single
替换为
Single
。不要担心那样的结果。改装为您处理。尝试了您的建议。没有帮助(
.subscribe({
 //access response code here like : it.code()
 //and you can access the response.body() for your data
 //also you can ask if that response.isSuccessful
})
interface OnlineStoreService{

    @Headers("Content-Type: application/json","Connection: close")
    @POST
    fun getDevices(
            @Url url: String,
            @Header("Authorization") token: String,
            @Body apiParams: APIParams
    ): Observable<OnlineStoresInfo>

} 


.subscribe({ onlineStoresInfo ->   // or it -> where "it" it's your object response, in this case is my class OnlineStoresInfo

                    loading.value = false
                    devices.value = onlineStoresInfo.devices

                }, { throwable ->
                    Log.e(this.javaClass.simpleName, "Error getDevices ", throwable)
                    loading.value = false
                    error.value = context.getString(R.string.error_information_default_html)
                })

.subscribe({ it -> 
// code
}, { throwable ->
 //code
})