/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠJ ess Y an Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġme . he gj . w android . app Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . j ess . arms . http . Global Http Handler Ċ import Ġme . he gj . w android . app . utils . Cache Util Ċ import Ġme . he gj . w android . app . utils . Http Utils . encode Cookie Ċ import Ġokhttp 3 . Form Body Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ Ċ /** Ċ Ġ* Ġ================================= =============== Ċ Ġ* Ġ å±ķç¤º Ġ[ Global Http Handler ] ĠçļĦ çĶ¨ æ³ķ Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠJ ess Y an Ġon Ġ 0 4 / 0 9 / 2 0 1 7 Ġ 1 7 : 0 6 Ċ Ġ* Ġ[ Contact Ġme ]( mailto : j ess . yan . eff ort @ gmail . com ) Ċ Ġ* Ġ[ Follow Ġme ]( https :// github . com / J ess Y an Coding ) Ċ Ġ* Ġ================================= =============== Ċ Ġ*/ Ċ class ĠGlobal Http Handler Impl ( val Ġcontext : ĠContext ) Ġ: ĠGlobal Http Handler Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¿ĻéĩĮ åı¯ä»¥ åħĪ å®¢æĪ·ç«¯ ä¸ĢæŃ¥ æĭ¿ åĪ° æ¯ı ä¸Ģæ¬¡ ĠHttp Ġè¯·æ±Ĥ çļĦ ç»ĵæŀľ , Ġåı¯ä»¥ åħĪ è§£æŀĲ æĪĲ ĠJson , Ġ åĨį åģļ ä¸ĢäºĽ æĵįä½ľ , Ġ å¦Ĥ æ£Ģæµĭ åĪ° Ġtoken Ġ è¿ĩ æľŁ åĲİ ĊĠĠĠĠ Ġ* Ġ éĩįæĸ° è¯·æ±Ĥ Ġtoken , Ġ å¹¶ éĩįæĸ° æī§è¡Į è¯·æ±Ĥ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġhttp Result Ġ æľįåĬ¡åĻ¨ è¿ĶåĽŀ çļĦ ç»ĵæŀľ Ġ( å·² è¢« æ¡Ĩæŀ¶ èĩªåĬ¨ è½¬æį¢ ä¸º åŃĹç¬¦ä¸² ) ĊĠĠĠĠ Ġ* Ġ@ param Ġchain ĠĠĠĠĠ Ġ[ okhttp 3 . Interceptor . Chain ] ĊĠĠĠĠ Ġ* Ġ@ param Ġresponse ĠĠ Ġ[ Response ] ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Response ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Http Result Response ( http Result : ĠString ?, Ġchain : ĠInter ceptor . Chain , Ġresponse : ĠResponse ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ æĺ¯ çĻ»å½ķ çļĦè¯Ŀ ï¼Į éľĢè¦ģ ä¿ĿåŃĺ cookie ĊĠĠĠĠĠĠĠ Ġif Ġ( chain . request (). url (). encoded Path (). contains (" user / login ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . headers (" set - cookie "). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¿ĿåŃĺ Cookie åģļ æĮģ ä¹ħ åĮĸ æĵįä½ľ Ġset - cookie åı¯èĥ½ ä¸º å¤ļä¸ª ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcookies Ġ= Ġresponse . headers (" set - cookie ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCache Util . set Cookie ( encode Cookie ( cookies )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¿ĻéĩĮ åı¯ä»¥åľ¨ è¯·æ±Ĥ æľįåĬ¡åĻ¨ ä¹ĭåīį æĭ¿ åĪ° Ġ[ Request ], Ġ åģļ ä¸ĢäºĽ æĵįä½ľ æ¯Ķå¦Ĥ ç»Ļ Ġ[ Request ] Ġ ç»Łä¸Ģ æ·»åĬł Ġtoken Ġ æĪĸèĢħ Ġheader Ġ ä»¥åıĬ åıĤæķ° åĬłå¯Ĩ çŃī æĵįä½ľ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġchain ĠĠ Ġ[ okhttp 3 . Interceptor . Chain ] ĊĠĠĠĠ Ġ* Ġ@ param Ġrequest Ġ[ Request ] ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Request ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon HttpRequest Before ( chain : ĠInter ceptor . Chain , Ġrequest : ĠRequest ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* Ġå¦Ĥæŀľ éľĢè¦ģ åľ¨ è¯·æ±Ĥ æľįåĬ¡åĻ¨ ä¹ĭåīį åģļ ä¸ĢäºĽ æĵįä½ľ , Ġ åĪĻ éĩįæĸ° æŀĦå»º ä¸Ģä¸ª åģļ è¿ĩ æĵįä½ľ çļĦ ĠRequest Ġ å¹¶ Ġreturn , Ġ å¦Ĥ å¢ŀåĬł ĠHeader ãĢģ Params Ġ çŃī è¯·æ±Ĥ ä¿¡æģ¯ , Ġä¸į åģļ æĵįä½ľ åĪĻ çĽ´æİ¥ è¿ĶåĽŀ åıĤæķ° Ġrequest */ ĊĠĠĠĠĠĠĠ Ġif Ġ( Cache Util . is Login ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġchain . request (). url (). newBuilder (). add Encoded Path Segment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcookies Ġ= ĠCache Util . get Cookie () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ å·²ç»ı çĻ»å½ķ è¿ĩ äºĨ ï¼Į éĤ£ä¹Ī è¯·æ±Ĥ çļĦæĹ¶åĢĻ åı¯ä»¥ å¸¦ ä¸Ĭ cookie ĠåıĤæķ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcookies ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġchain . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Cookie ", Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġ. post ( Form Body . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Encoded (" token "," xxx ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build ()) */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrequest ĊĠĠĠ Ġ} Ċ } Ċ