1. 程式人生 > >Retrofit(OKHttp)多BaseUrl情況下url實時自動替換完美解決方法

Retrofit(OKHttp)多BaseUrl情況下url實時自動替換完美解決方法

前言

多數專案中會出現用到多個BaseUrl的情況,而Retrofit未提供實時切換BaseUrl的方法,且我們在使用Retrofit以及OkHttp時,通常使用單例模式建立Retrofit和OkHttpClient,也不可能每個請求都建立一個Retrofit例項。面對這個實際問題,我們需要做的不僅僅是解決當前問題,更應該從根本上解決該問題,即實現任何情況下的自動切換BaseUrl。 主要用於個人積累及分享,如有錯誤請隨時指出,文中可能引用其他大牛文章(僅引用連結不轉載),如有侵權請告知必妥善處理。

正文

思路分析

問題

一個例子,給出資源如下:

?
1 2 3 4 5 6 7 8 9 10 11 12 //賬戶服地址 //支付服地址 //**********賬戶介面方法(使用賬戶服地址base_url_user) String method_path_user_01 = "user/login"; String method_path_user_02 = "user/register"; //**********支付介面方法(使用支付服地址base_url_pay) String method_path_pay_01 =
"pay/getorder"; String method_path_pay_02 = "pay/payment";

通常情況下,RetrofitService.java中,我們這樣寫:

?
1 2 3 4 5 6 7 8 9 10 11 12 @POST("user/login") Observable<jsonobject> login(@QueryMap Map<string, object=""> paramMap);
@POST("user/register") Observable<jsonobject> register(@QueryMap Map<string, object=""> paramMap); @POST("pay/getorder") Observable<jsonobject> getOrder(@QueryMap