首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用Retrofit2 +解密+ Json转换器

调用Retrofit2 +解密+ Json转换器
EN

Stack Overflow用户
提问于 2018-08-23 00:25:29
回答 1查看 462关注 0票数 1

我使用retrofit2kotlin中,我需要得到的内容是一个json和这个encrypted,我知道要转换json只需使用JacksonConverterFactory (直到这部分工作良好),但在此之前添加了一个encryption,我不知道如何处理这个,我需要创建一个我自己的转换器吗?有谁有读物要告诉我吗?

我目前的改装要求

代码语言:javascript
复制
val retrofit = Retrofit.Builder()                
            .baseUrl("http://100.1.1.100/")
            .addConverterFactory(JacksonConverterFactory.create())
            .client(httpClient.build())
            .build()

我已经有我的函数要解密了:

代码语言:javascript
复制
CryptAES.decrypt(value))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-24 22:43:46

这可以通过创建解密interceptor来完成

代码语言:javascript
复制
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
    }
}

设置:

代码语言:javascript
复制
val httpClient = OkHttpClient().newBuilder()
httpClient.addInterceptor(DecryptInterceptor())
val retrofit = Retrofit.Builder()
        .baseUrl("http://100.1.1.100/")
        .addConverterFactory(JacksonConverterFactory.create())
        .client(httpClient.build())
        .build()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51971261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档