Retrofit 自定義Converter解密網(wǎng)絡請求新套路

使用retrofit處理網(wǎng)絡請求時,通常解析的結(jié)果是通過GsonConverterFactory或者是其他的Jackson之類的解析器來處理Json對象的解析。遇到需要解密的時候,先看返回的數(shù)據(jù):

{"retCode":200,"retDesc":"Success","ret":xxxxxx}

? ? ret里存放的是加密過的數(shù)據(jù)。

兩種套路:

一. 自定義Converter

.addConverterFactory(MyConverterFactory.create())

通??梢蕴幚韺⑺械恼埱蟮姆祷厝窟M行解密,如果我們要根據(jù)請求去判斷是否解密,因為在Converter里無法獲取到Reqest和Response對象,所有如何判斷這個接口請求是否需要解密結(jié)果是個問題。

二.將對象解析成json后處理加密的ret

結(jié)合RxJava使用map轉(zhuǎn)換。


使用注解

public interface GitHubService {

@GET("users/{user}/repos")

?Call> listRepos(@Path("user") String user);

?}

Retrofit構(gòu)造請求時,使用了注解@GET,再看看Converter里的代碼

發(fā)現(xiàn)參數(shù)里返回里傳了annotations數(shù)組,所以,遍歷它吧,里面包含了所有你寫請求時加的注解

@Override?

public Converter responseBodyConverter(Type type, Annotation[] annotations, Retrofitretrofit) {?

????boolean encryt = false;??

????for (int i = 0; i < annotations.length; i++) {???

????????if (annotations[i].annotationType().toString().equals(ENCRYT.class.toString())) {???????

????????????encryt = true;?????

????????}????

? ? ?}???

return new MyResponseBodyConverter<>(gson, type, encryt);

}

自定義一個注解@XXX,請求時寫上標記你的請求類型,加密。

然后你就可以在Converter里處理了。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 個人淺見,歡迎批評!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評論 19 139
  • 簡介 剛接觸Retrofit的時候,就寫了一篇簡單的使用介紹:Retrofit 2.0基本使用方法,算是對Retr...
    Whyn閱讀 3,104評論 4 24
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,940評論 1 92
  • 本文將順著構(gòu)建請求對象->構(gòu)建請求接口->發(fā)起同步/異步請求的流程,分析Retrofit是如何實現(xiàn)的。 開始之前,...
    zhuhf閱讀 1,684評論 0 10
  • 我不是你最早的一批粉絲,不是最癡的迷妹。我只是那個單純尊敬崇拜你的胡椒。 初始驚艷已淪陷 當我...
    杳_閱讀 490評論 4 7

友情鏈接更多精彩內(nèi)容