一、動態替換BaseUrl
在平時開發過程中,可能會遇到使用不同的BaseUrl請求的情況,比如我業務邏輯有一個url,然後請求資源(比如圖片)又是另外一個地址。這裏我的例子是wanandroid的api和必應的每日一圖接口(來自郭霖大佬:http://guolin.tech/api/bing_pic)下面有幾種方式不需要創建多個retrofit實例而實現動態切換baseUrl。
-
官方方案:
使用@Url註解,然後把全路徑作爲參數傳入就可以替換請求全路徑而不需要baseUrl,由於需求比較簡單,我這裏採用的就是此方法.
-
JessYan的RetrofitUrlManager
一種很優雅的方式: RetrofitUrlManager
二、Retrofit接收非Json字符串
我這裏請求每日一圖接口,返回的直接是個String類型的url,然後就會報一個MalformedJsonException,這裏只需要增加一個轉換器,官方已經提供了。
- 首先引入依賴 com.squareup.retrofit2:converter-scalars:${version[“retrofitSdkVersion”]},
- 在retrofit配置中添加ScalarsConverterFactory轉換器,
- 用ResponseBody來接收就可以了。