package Ġcom . zk team . connection Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . zk team . connection . api . ZK Api Ċ import Ġcom . zk team . connection . api . ZK Url Config Ċ import Ġcom . zk team . sdk . ZK Base Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Response Ċ 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 . IOException Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠZ K ConnectionManager Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ åıĮ éĩį æł¡éªĮ éĶģ å¼ı ï¼Ī Double ĠCheck ) ĊĠĠĠĠĠĠĠ Ġval Ġinstance : ĠZ K ConnectionManager Ġby Ġlazy ( mode Ġ= ĠLazy Thread Safety Mode . SYN CH RON IZED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠZ K ConnectionManager () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// http :// blog . cs dn . net / u 0 1 4 6 9 5 1 8 8 / article / details / 5 2 9 8 5 5 1 4 ĊĠĠĠ Ġprivate Ġval Ġbuilder Ġ= ĠOk HttpClient . Builder () ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Gson (): ĠGson Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// éħįç½® ä½łçļĦ Gson ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set DateFormat (" yyyy - MM - dd Ġhh : mm : ss ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Builder (): ĠOk HttpClient . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Ret rofit (): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . connect Timeout ( 1 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġbuilder . read Timeout ( 1 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġbuilder . write Timeout ( 1 0 , ĠTimeUnit . SECONDS ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ZK Base . isDebug ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// log ä¿¡æģ¯ æĭ ¦ æĪª åĻ¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp Logging Interceptor Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Logging Interceptor . level Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® Debug ĠLog æ¨¡å¼ı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( http Logging Interceptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( object Ġ: ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= Ġchain . request () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ 2 0 1 8 / 3 / 6 Ġ Ġæ·»åĬł ç»Łä¸Ģ çļĦ Ġheader ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Builder Ġ= Ġoriginal . newBuilder () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap < String , ĠString > Ġmap Ġ= ĠK D Request Utils . getHeader Maps (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( Map . Entry < String , ĠString > Ġentry : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap . entrySet ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Builder . header ( entry . getKey (), Ġentry . getValue ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġrequest Builder . build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( ZK Url Config . ZK _ TEST _ DOMAIN _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( get Gson ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget ZK Api (): ĠZ K Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Ret rofit (). create ( ZK Api :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Api ( cls : ĠClass < *> ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Ret rofit (). create ( cls ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset BaseUrl ( baseUrl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠZ K Url Config . ZK _ TEST _ DOMAIN _ URL Ġ= ĠbaseUrl ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Debug ( isDebug : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠZ K Base . isDebug Ġ= Ġis Debug ĊĠĠĠ Ġ} Ċ Ċ }