android - 如何以自定义对象为主体创建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
)
?
解决方案
推荐阅读
- ansible - Ansible 从列表变量的匹配元素中提取子字符串
- javascript - 在 v-for 输入字段中获取和设置反应值
- arrays - 使用 Angular 数组中的 id 获取元素的最佳方法
- python - 更改 sys.modules 导致意外的 KeyError
- xpath - YouTube 订阅者的 xpath 不起作用
- java - AWS Lambda Java 运行时:主目录不存在?
- ruby-on-rails - 有没有人建议我如何或在哪里获得作为初学者程序员的一对一指导(最好是免费的)?
- php - Composer 安装错误 - jms-security-extra-bundle
- firebase - 如何在 https 而不是 http 上运行 firebase(函数)模拟器?
- sql - 如何pring节点sequelize查询但不执行