package Ġcom . lu uu . se ven . http . interceptor Ċ Ċ import Ġandroid . util . Log Ċ import Ġokhttp 3 .* Ċ import Ġok io . Buffer Ċ import Ġjava . io . IOException ĊĊ Ċ class ĠTest Interceptor Ġ: ĠInter ceptor Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnew Host Ġ= Ġ" 1 2 7 . 0 . 0 . 1 " ĊĠĠĠ Ġprivate Ġval Ġpath 1 Ġ= Ġ"/ test / upload / img " ĊĠĠĠ Ġprivate Ġval Ġpath 2 Ġ= Ġ"/ test / upload / voice " ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Test Interceptor " ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġrequest Body ToString ( request Body : ĠRequest Body ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠBuffer () ĊĠĠĠĠĠĠĠ Ġrequest Body . writeTo ( buffer ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbuffer . read Utf 8 () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest : ĠRequest Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġchain . proceed ( request ) ĊĊĠĠĠĠĠĠĠ Ġval Ġurl : ĠHttp Url Ġ= Ġrequest . url ĊĠĠĠĠĠĠĠ Ġ// http :// 1 2 7 . 0 . 0 . 1 / test / upload / img ? userName = xia om ing & user Password = 1 2 3 4 5 ĊĠĠĠĠĠĠĠ Ġ// http :// 1 2 7 . 0 . 0 . 1 / test / upload / img ? userName = xia om ing & user Password = 1 2 3 4 5 ĊĠĠĠĠĠĠĠ Ġval Ġscheme Ġ= Ġurl . scheme Ġ// Ġ Ġhttp Ġhttps ĊĠĠĠĠĠĠĠ Ġval Ġhost Ġ= Ġurl . host Ġ// ĠĠĠ 1 2 7 . 0 . 0 . 1 ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġurl . encoded Path Ġ// Ġ Ġ/ test / upload / img ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġurl . encoded Query Ġ// Ġ ĠuserName = xia om ing & user Password = 1 2 3 4 5 ĊĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠ Ġval Ġnew Url Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( scheme ). append ( new Host ). append ( path ). append (" ? "). append ( query ). toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= Ġrequest . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( new Url ) ĊĊĠĠĠĠĠĠĠ Ġ// URL éĩį å®ļ åĲĳ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġchain . proceed ( builder . build ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġs bb Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠ Ġs bb . append ( scheme ). append ( new Host ). append ( path ). append (" ?") ĊĠĠĠĠĠĠĠ Ġval Ġquery List Ġ= Ġurl . query Parameter Names ĊĠĠĠĠĠĠĠ Ġval Ġiterator : ĠIterator < String > Ġ= Ġquery List . iterator () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġquery List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Name Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs bb . append ( query Name ). append (" =") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Key Ġ= Ġurl . query Parameter ( query Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¯¹ query çļĦ key è¿Ľè¡Į åĬłå¯Ĩ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġs bb . append ( Common Utils . get MD 5 ( query Key )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs bb . append ("& ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// åĬłå¯Ĩ query åĨħå®¹ Ċ // ĠĠĠĠĠĠĠ Ġval Ġnew Url Ġ= Ġsb . toString () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= Ġrequest . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( new Url ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġchain . proceed ( builder . build ()) ĊĊĠĠĠĠĠĠĠ Ġ// -------------------- ĊĊĠĠĠĠĠĠĠ Ġ// åĬłå¯Ĩ body ä½ĵ åĨħå®¹ Ċ // ĠĠĠĠĠĠĠ Ġval Ġbody 1 Ġ= Ġrequest . body () Ċ // ĠĠĠĠĠĠĠ Ġval Ġbody ToString 1 Ġ= Ġrequest Body ToString ( body 1 !! ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġtest Bean : ĠTest Bean Ġ= ĠGson Tools . change Gson To Bean ( body ToString , ĠTest Bean :: class . java ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġuser Password : ĠString Ġ= Ġtest Bean . getUser Password () ĊĠĠĠĠĠĠĠ Ġ// åĬłå¯Ĩ body ä½ĵ ä¸ŃçļĦ çĶ¨æĪ· å¯Ĩçłģ ĊĠĠĠĠĠĠĠ Ġ// åĬłå¯Ĩ body ä½ĵ ä¸ŃçļĦ çĶ¨æĪ· å¯Ĩçłģ Ċ // ĠĠĠĠĠĠĠ Ġtest Bean . setUser Password ( Common Utils . get MD 5 ( user Password )) Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġtest Gson String : ĠString Ġ= ĠGson Tools . create Gson String ( test Bean ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Body . create ( MediaType . parse (" application / json "), Ġtest Gson String ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= Ġrequest . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( request Body ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( new Url ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġchain . proceed ( builder . build ()) ĊĠĠĠĠĠĠĠ Ġ// -------------------- ĊĊĠĠĠĠĠĠĠ Ġ// HEAD åĬ¨æĢģ æ·»åĬł Ċ // ĠĠĠĠĠĠĠ Ġwhen Ġ( path ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġpath 1 Ġ-> Ġbuilder . add Header (" token ", Ġ" token ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġpath 2 Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Header (" token ", Ġ" token ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Header (" uid ", Ġ" uid ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġchain . proceed ( builder . build ()) ĊĠĠĠĠĠĠĠ Ġ// -------------------- ĊĠĠĠĠĠĠĠ Ġ// è¯·æ±Ĥ æĹ¥å¿Ĺ æĬ ĵ åıĸ ĊĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġrequest . body ĊĠĠĠĠĠĠĠ Ġval Ġbody ToString Ġ= Ġrequest Body ToString ( body !! ) ĊĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġscheme ) ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġhost ) ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġpath ) ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġquery ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( response Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġresponse . body ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Length Ġ= Ġresponse Body !!. content Length () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Size Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( content Length Ġ!= Ġ- 1 L ) Ġ"$ content Length - byte " Ġelse Ġ" unknown - length " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , Ġresponse . code . toString () Ġ+ Ġ' Ġ' Ġ+ Ġresponse . message Ġ+ Ġ' Ġ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġresponse . request . url Ġ+ Ġ' Ġ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġbody Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġresponse . headers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġheaders . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġheaders . name ( i ). toString () Ġ+ Ġ": Ġ" Ġ+ Ġheaders . value ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġchain . proceed ( request ) ĊĠĠĠ Ġ} Ċ Ċ }