我使用retrofit2在kotlin中,我需要得到的内容是一个json和这个encrypted,我知道要转换json只需使用JacksonConverterFactory (直到这部分工作良好),但在此之前添加了一个encryption,我不知道如何处理这个,我需要创建一个我自己的转换器吗?有谁有读物要告诉我吗?
我目前的改装要求
val retrofit = Retrofit.Builder()
.baseUrl("http://100.1.1.100/")
.addConverterFactory(JacksonConverterFactory.create())
.client(httpClient.build())
.build()我已经有我的函数要解密了:
CryptAES.decrypt(value))发布于 2018-08-24 22:43:46
这可以通过创建解密interceptor来完成
class DecryptInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response = chain
.run { proceed(request()) }
.let { response ->
return@let if (response.isSuccessful) {
val body = response.body()!!
val contentType = body.contentType()
val charset = contentType?.charset() ?: Charset.defaultCharset()
val buffer = body.source().apply { request(Long.MAX_VALUE) }.buffer()
val bodyContent = buffer.clone().readString(charset)
response.newBuilder()
.body(ResponseBody.create(contentType, bodyContent.let(::decryptBody)))
.build()
} else response
}
private fun decryptBody(content: String): String {
//decryption
return content
}
}设置:
val httpClient = OkHttpClient().newBuilder()
httpClient.addInterceptor(DecryptInterceptor())
val retrofit = Retrofit.Builder()
.baseUrl("http://100.1.1.100/")
.addConverterFactory(JacksonConverterFactory.create())
.client(httpClient.build())
.build()https://stackoverflow.com/questions/51971261
复制相似问题