android retrofit 原始碼分析

2021-09-24 10:17:03 字數 1688 閱讀 7036

好記性不如寫部落格。

進入自問自答環節:

retrofit 有什麼東西呢?

retrofit 那些類是必須要說的?

思考問題?

請求加密 響應解密 該如何做?

返回體加入特殊字段怎麼做?

流程:因為uml 不方便放上去,所以就簡單說下。

簡單使用:

retrofit.create(method.class).http();簡單流程:

(retrofit) 請求方法()

(requestfactory) 校驗註解

校驗方法(get post) 是否正確。

校驗解析引數與方法是否對應

(converter requset string 轉換 ) post 和 get 進行分類並且呼叫 requestbodyconverter | stringconverter 轉化並組裝。

(httpservicemethod)返回型別 型別的校驗。括號裡面不符合 (void genericarraytype(陣列) typevariable(t ) wildcardtype(萬用字元) ) 從外到裡 判斷。

確認 返回 介面卡(calladapter.get()) == 返回型別

確定返回response 轉換器 converter.responsebodyconverter

(okhttpcall)配置okhttp 請求 響應 取消等流程

invoke

converter.responsebodyconverter 正式使用?

在**算是真正的執行 okhttpcall.execute?

問題一: 請求加密 響應解密 該如何做?

新增自定義 addconverte***ctory

>>>>(具體寫法可參照 gsonconverte***ctory.create(getgson())).

注意:stringconverter 支援:

@fieldmap @headermap @path @query @querymap @field
requestbodyconverter 支援

@body  @part @partmap
可以自定義註解 標識改http 是否要加密。

@base64

@post("/")

single> request(@body string body);

問題二: 返回體加入特殊字段怎麼做?

這裡只能提個思路。業務不同,不好細說。

baseresult 是我們定義resulttype

responsebodyconverter 方法中可以獲取返回型別。

彩蛋:

設定 validateeagerly=true,會發現不一樣的地方。

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...

AbstractListView原始碼分析3

normal list that does not indicate choices public static final int choice mode none 0 the list allows up to one choice public static final int choice ...

Android AsyncTask原始碼分析

android中只能在主線程中進行ui操作,如果是其它子執行緒,需要借助非同步訊息處理機制handler。除此之外,還有個非常方便的asynctask類,這個類內部封裝了handler和執行緒池。本文先簡要介紹asynctask的用法,然後分析具體實現。asynctask是乙個抽象類,我們需要建立子...