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