Как создать retrofit2.Response с пользовательским объектом в качестве тела? - PullRequest
0 голосов
/ 23 января 2020

В приложении 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)

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...