如何使用改造显示来自 POST 响应的列表?
how to show list from POST response using retrofit?
我想显示改造后的响应 POST。我真的不知道怎么做,因为我的回复是数组,但是 POST.
我的回复是这样的
{
"message":[
"00",
"Get Success"
],
"result":{
"listProgram":[
{
"banner":"",
"area":"",
"domainlembaga":"",
"domainprogram":"",
"donate":0
{
.
.
.
]
服务
interface Service {
@POST("program/list")
fun getProgram(@Body body: Pair<String, Int>, pair: Pair<String, Int>): Call<BaseBersedekahResponse<ListProgramBersedekahResponse>>
数据
data class BaseBersedekahResponse<T>(
@SerializedName("message") val message: String?,
@SerializedName("result") val result: T?
)
data class ListProgramBersedekahResponse(
@SerializedName("listProgram") val listProgram: List<ProgramBersedekahResponse>?
)
data class ProgramBersedekahResponse(
@SerializedName("banner") val banner: String?,
@SerializedName("domainlembaga") val domainlembaga: String?,
@SerializedName("domainprogram") val domainprogram: String?,
@SerializedName("donate") val donatur: Int?
)
activity
val retrofit: Retrofit = Retrofit.Builder()
.baseUrl(APIUrl.BASEURL)
.addConverterFactory(GsonConverterFactory.create())
.build()
val apiService: Service = retrofit.create(Service::class.java)
val call: Call<BaseBersedekahResponse<ListProgramBersedekahResponse>> = apiService.getProgram(
"limit" to 1,
"group" to 4)
call.enqueue(object : Callback<BaseBersedekahResponse<ListProgramBersedekahResponse>> {
override fun onResponse(call: Call<BaseBersedekahResponse<ListProgramBersedekahResponse>, response: Response<BaseBersedekahResponse<ListProgramBersedekahResponse>>) {
val getProgram: List<ProgramBersedekahResponse?>? = response.body().result.listProgram
Toast.makeText(applicationContext, "success", Toast.LENGTH_SHORT).show()
}
override fun onFailure(call: Call<BaseBersedekahResponse<ListProgramBersedekahResponse>>, t: Throwable) {
Toast.makeText(applicationContext, "Failure", Toast.LENGTH_SHORT).show()
}
})
我实际上计划在 RecyclerView 中显示它,但我仍然不知道如何显示它来自 POST 的响应。请帮忙
你们的签名应该相互匹配。您应该使您的签名与您界面中的签名相同。
对于您的请求正文:
data class BersedekahRequest(
@SerializedName("limint") val limint: Int,
@SerializedName("group") val group: Int
)
然后你的界面:
@POST("program/list")
fun getProgram(@Body body: BersedekahRequest): Call<BaseBersedekahResponse<ListProgramBersedekahResponse>>
您的休息服务电话:
val requestBody = BersedekahRequest(10,20)
val call: Call<BaseBersedekahResponse<ListProgramBersedekahResponse>> = apiService.getProgram(requestBody)
call.enqueue(object : Callback<BaseBersedekahResponse<ListProgramBersedekahResponse>> {
override fun onResponse(call: Call<BaseBersedekahResponse<ListProgramBersedekahResponse>, response: Response<BaseBersedekahResponse<ListProgramBersedekahResponse>>) {
val GetApps2: List<ProgramBersedekahResponse?>? = response.body().result.listProgram
Toast.makeText(applicationContext, "success", Toast.LENGTH_SHORT).show()
}
override fun onFailure(call: Call<ListProgramBersedekahResponse>, t: Throwable) {
Toast.makeText(applicationContext, "Failure", Toast.LENGTH_SHORT).show()
}
})
而且我认为你还有一个问题。
fun getProgram(@Body body: ProgramBersedekahResponse?)
此 @Body 是您将通过 POST 请求发送的正文,而不是您的响应正文。如果您不在 post 正文中发送任何内容,请将其清空,或提供适当的请求正文,因为它看起来像是您现在的响应对象。
我想显示改造后的响应 POST。我真的不知道怎么做,因为我的回复是数组,但是 POST.
我的回复是这样的
{
"message":[
"00",
"Get Success"
],
"result":{
"listProgram":[
{
"banner":"",
"area":"",
"domainlembaga":"",
"domainprogram":"",
"donate":0
{
.
.
.
]
服务
interface Service {
@POST("program/list")
fun getProgram(@Body body: Pair<String, Int>, pair: Pair<String, Int>): Call<BaseBersedekahResponse<ListProgramBersedekahResponse>>
数据
data class BaseBersedekahResponse<T>(
@SerializedName("message") val message: String?,
@SerializedName("result") val result: T?
)
data class ListProgramBersedekahResponse(
@SerializedName("listProgram") val listProgram: List<ProgramBersedekahResponse>?
)
data class ProgramBersedekahResponse(
@SerializedName("banner") val banner: String?,
@SerializedName("domainlembaga") val domainlembaga: String?,
@SerializedName("domainprogram") val domainprogram: String?,
@SerializedName("donate") val donatur: Int?
)
activity
val retrofit: Retrofit = Retrofit.Builder()
.baseUrl(APIUrl.BASEURL)
.addConverterFactory(GsonConverterFactory.create())
.build()
val apiService: Service = retrofit.create(Service::class.java)
val call: Call<BaseBersedekahResponse<ListProgramBersedekahResponse>> = apiService.getProgram(
"limit" to 1,
"group" to 4)
call.enqueue(object : Callback<BaseBersedekahResponse<ListProgramBersedekahResponse>> {
override fun onResponse(call: Call<BaseBersedekahResponse<ListProgramBersedekahResponse>, response: Response<BaseBersedekahResponse<ListProgramBersedekahResponse>>) {
val getProgram: List<ProgramBersedekahResponse?>? = response.body().result.listProgram
Toast.makeText(applicationContext, "success", Toast.LENGTH_SHORT).show()
}
override fun onFailure(call: Call<BaseBersedekahResponse<ListProgramBersedekahResponse>>, t: Throwable) {
Toast.makeText(applicationContext, "Failure", Toast.LENGTH_SHORT).show()
}
})
我实际上计划在 RecyclerView 中显示它,但我仍然不知道如何显示它来自 POST 的响应。请帮忙
你们的签名应该相互匹配。您应该使您的签名与您界面中的签名相同。
对于您的请求正文:
data class BersedekahRequest(
@SerializedName("limint") val limint: Int,
@SerializedName("group") val group: Int
)
然后你的界面:
@POST("program/list")
fun getProgram(@Body body: BersedekahRequest): Call<BaseBersedekahResponse<ListProgramBersedekahResponse>>
您的休息服务电话:
val requestBody = BersedekahRequest(10,20)
val call: Call<BaseBersedekahResponse<ListProgramBersedekahResponse>> = apiService.getProgram(requestBody)
call.enqueue(object : Callback<BaseBersedekahResponse<ListProgramBersedekahResponse>> {
override fun onResponse(call: Call<BaseBersedekahResponse<ListProgramBersedekahResponse>, response: Response<BaseBersedekahResponse<ListProgramBersedekahResponse>>) {
val GetApps2: List<ProgramBersedekahResponse?>? = response.body().result.listProgram
Toast.makeText(applicationContext, "success", Toast.LENGTH_SHORT).show()
}
override fun onFailure(call: Call<ListProgramBersedekahResponse>, t: Throwable) {
Toast.makeText(applicationContext, "Failure", Toast.LENGTH_SHORT).show()
}
})
而且我认为你还有一个问题。
fun getProgram(@Body body: ProgramBersedekahResponse?)
此 @Body 是您将通过 POST 请求发送的正文,而不是您的响应正文。如果您不在 post 正文中发送任何内容,请将其清空,或提供适当的请求正文,因为它看起来像是您现在的响应对象。