首页 > 解决方案 > 如何以自定义对象为主体创建retrofit2.Response?

问题描述

在 Android 应用程序中,我使用 Retrofit2 来执行 http 请求。它工作正常。

还要创建错误响应,我使用这个:

import okhttp3.MediaType
import okhttp3.Protocol
import okhttp3.Request
import okhttp3.ResponseBody
import retrofit2.Response

   private val CODE_TEMPLATE = "[CODE_TEMPLATE]"   
   private val MESSAGE_TEMPLATE = "[MESSAGE_TEMPLATE]"
   private val templateBody =
                    "{\n" + "\"code\": $CODE_TEMPLATE,\n" + "\"message\": \"$MESSAGE_TEMPLATE\"\n" + "}"

          private fun createTransportErrorResponse(
                    code: Int = defaultCode,
                    message: String = defaultMessage
                ): Response<*> {
                    val body =
                        templateBody.replace(CODE_TEMPLATE, "$code").replace(MESSAGE_TEMPLATE, "$message")
                    val rawResponse = okhttp3.Response.Builder()
                        .code(code)
                        .message(message)
                        .protocol(Protocol.HTTP_1_1)
                        .request(Request.Builder().url(BuildConfig.API_BASE_URL).build())
                        .build()
                    val responseBody = ResponseBody.create(
                        MediaType.parse("application/json"),
                        body
                    )
                    val errorResponse = Response.error<Response<*>>(responseBody, rawResponse)
                    return errorResponse
                }
            }

正如你所看到的,我使用 json 好的。它工作正常。

问题是:

是否可以像这样在我的自定义对象中使用:

class Bonus {
    var id: Int = 0
    var balance: Double = 0.0
    var name: String = ""
    }

我需要Response.body成为我的自定义对象 ( Bonus)

?

标签: androidretrofit2okhttp

解决方案


推荐阅读