package Ġcom . hw . app copy . net Ċ Ċ import Ġcom . hw . app copy . App Ċ import Ġcom . hw . app copy . api . ApiService Ċ import Ġcom . hw . app copy . api . Url Constant Ċ import Ġcom . hw . app copy . utils . App Utils Ċ import Ġcom . hw . app copy . utils . Preference Ċ import Ġokhttp 3 . Cache Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . adapter . rx java 2 . Rx Java 2 Call Adapter Factory Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjava . io . File Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ private Ġconst Ġval ĠONE : ĠLong Ġ= Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 Ċ Ċ /** Ċ Ġ* author ï¼ļ pc - 2 0 1 7 1 1 2 5 Ċ Ġ* data : 2 0 1 9 / 9 / 2 4 Ġ 1 7 : 2 3 Ċ Ġ*/ Ċ object ĠRet rofit Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġtoken : ĠString Ġby ĠPreference (" token ", Ġ"") ĊĊĠĠĠ Ġval Ġservice : ĠApi Service Ġby Ġlazy ( Lazy Thread Safety Mode . SYN CH RON IZED ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Ret rofit (). create ( ApiService :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Ret rofit (): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// èİ·åıĸ ret rofit å®ŀä¾ĭ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Url Constant . BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( get Ok HttpClient ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Ok HttpClient (): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æ·»åĬł ä¸Ģä¸ª log æĭ ¦ æĪª åĻ¨ , æīĵåį° æīĢæľīçļĦ log ĊĠĠĠĠĠĠĠ Ġval Ġhttp Logging Interceptor Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® è¯·æ±Ĥ è¿ĩæ»¤ çļĦ æ°´ å¹³ ĊĠĠĠĠĠĠĠ Ġhttp Logging Interceptor . level Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® è¯·æ±Ĥ çļĦ ç¼ĵåŃĺ å¤§å°ı è·Ł ä½įç½® ĊĠĠĠĠĠĠĠ Ġval Ġcache File Ġ= ĠFile ( App . context . cacheDir , Ġ" cache ") ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½®ä¸º 5 0 M ĊĠĠĠĠĠĠĠ Ġval Ġcache Ġ= ĠCache ( cache File , ĠONE Ġ* Ġ 5 0 ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( add QueryParameter Interceptor ()) Ġ// åıĤæķ° æ·»åĬł ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( add Header Interceptor ()) Ġ// Ġtoken è¿ĩæ»¤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( http Logging Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache ( cache ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 6 0 L , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 6 0 L , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 6 0 L , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® åħ¬ åħ± åıĤæķ° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd QueryParameter Interceptor (): ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInter ceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Request Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest : ĠRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodified Url Ġ= Ġoriginal Request . url (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter (" ud id ", Ġ" d 2 8 0 7 c 8 9 5 f 0 3 4 8 a 1 8 0 1 4 8 c 9 dfa 6 f 2 fee ac 0 7 8 1 b 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter (" device Model ", ĠApp Utils . get Mobile Model ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġoriginal Request . newBuilder (). url ( modified Url ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® å¤´ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Header Interceptor (): ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInter ceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Request Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Builder Ġ= Ġoriginal Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" token ", Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. method ( original Request . method (), Ġoriginal Request . body ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġrequest Builder . build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ