Retrofit(OKHttp)多BaseUrl情況下url實時自動替換完美解決方法
阿新 • • 發佈:2019-02-16
前言
多數專案中會出現用到多個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
|