package Ġcom . k ang ra oo . base kt lib . tools . okhttp Ċ Ċ import Ġcom . k ang ra oo . base kt lib . data . model . S Exp Model Ċ import Ġcom . k ang ra oo . base kt lib . tools . H String Ċ import Ġcom . k ang ra oo . base kt lib . tools . log . UL og Ċ import Ġcom . k ang ra oo . base kt lib . tools . store . Memory Store Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ import Ġjava . net . URL Ċ Ċ /** Ċ Ġ* Ġokhttp Ġ éĩį è¯ķ æ¬¡æķ° Ċ Ġ*/ Ċ class ĠRetry Intercept er ( private Ġvar Ġmax Retry : ĠInt ) Ġ: ĠInter ceptor Ġ{ Ċ // Ġ åģĩ å¦Ĥ è®¾ç½®ä¸º 3 æ¬¡ éĩį è¯ķ çļĦè¯Ŀ ï¼Į åĪĻ æľĢå¤§ åı¯èĥ½ è¯·æ±Ĥ 4 æ¬¡ ï¼Ī é»ĺè®¤ 1 æ¬¡ + 3 æ¬¡ éĩį è¯ķ ï¼ī ĊĊĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest : ĠRequest Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠ Ġvar Ġpath Ġ= ĠURL ( request . url . toString ()). path Ġ+ Ġ"_ exp " ĊĠĠĠĠĠĠĠ Ġvar Ġretry Num Ġ= ĠMemory Store . instance . get ( path , Ġ 0 ) !! ĊĠĠĠĠĠĠĠ ĠU Log . d (" å½ĵåīį è¯·æ±Ĥ æ¬¡æķ° =$ retry Num ") ĊĠĠĠĠĠĠĠ Ġvar Ġresponse Ġ= Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ(! response . is Successful Ġ&& Ġretry Num Ġ< Ġmax Retry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretry Num Ġ= ĠMemory Store . instance . get ( path , Ġ 0 ) !! Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMemory Store . instance . put ( path , S Exp Model ( retry Num , 3 0 0 0 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . close () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠU Log . d (" æŃ£åľ¨ éĩį è¯ķ æ¬¡æķ° =$ retry Num ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠ Ġ} Ċ } Ċ