package Ġcom . jst . network . interceptor Ċ Ċ import Ġcom . jst . network . exception . ApiException Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Response Ċ import Ġorg . json . JSONObject Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . nio . charset . StandardCharsets . UTF _ 8 Ċ Ċ /** Ċ Ġ* Ġ ä¸ļåĬ¡ éĶĻè¯¯ ĠInter ceptor Ċ Ġ* Ġ å¯¹äºİ request : Ġ æĹł Ċ Ġ* Ġ å¯¹äºİ response : è´Ł è´£ è§£æŀĲ ä¸ļåĬ¡ éĶĻè¯¯ ï¼Ī åľ¨ http Ġstatus Ġ æĪĲåĬŁ çļĦ åīį æıĲ ä¸ĭ ï¼ī Ċ Ġ*/ Ċ class ĠBusiness Error Interceptor Ġ: Interceptor { ĊĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġresponse Ġ= Ġchain . proceed ( chain . request ()) ĊĠĠĠĠĠĠĠ Ġ// http Ġstatus ä¸įæĺ¯ æĪĲåĬŁ çļĦ æĥħåĨµä¸ĭ ï¼Į æĪĳä»¬ ä¸į å¤ĦçĲĨ ĊĠĠĠĠĠĠĠ Ġif Ġ(! response . is Successful ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// åĽłä¸º response . body (). string () Ġåıª èĥ½ è°ĥçĶ¨ ä¸Ģæ¬¡ ï¼Į æīĢä»¥ è¿ĻéĩĮ è¯»åıĸ response Body ä¸į ä½¿çĶ¨ response . body (). string () ï¼Į åİŁåĽł ï¼ļ https :// juejin . im / post / 6 8 4 4 9 0 3 5 4 5 6 2 8 5 2 4 5 5 1 ĊĠĠĠĠĠĠĠ Ġ// ä»¥ä¸ĭ è¯»åıĸ result String çļĦä»£çłģ èĬĤ éĢī èĩª ĊĠĠĠĠĠĠĠ Ġ// https :// github . com / square / okhttp / blob / master / okhttp - logging - interceptor / src / main / kotlin / okhttp 3 / logging / Http Logging Interceptor . kt ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġresponse . body () !! ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġresponse Body . source () ĊĠĠĠĠĠĠĠ Ġsource . request ( Long . MAX _ VALUE ) Ġ// ĠBuffer Ġthe Ġentire Ġbody . ĊĠĠĠĠĠĠĠ Ġvar Ġbuffer Ġ= Ġsource . buffer ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġresponse Body . contentType () ĊĠĠĠĠĠĠĠ Ġval Ġcharset : ĠCharset Ġ= ĠcontentType ?. charset ( UTF _ 8 ) Ġ?: ĠUTF _ 8 ĊĠĠĠĠĠĠĠ Ġval Ġresult String Ġ= Ġbuffer . clone (). readString ( charset ) ĊĊĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject ( result String ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! jsonObject . has (" errorCode ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠerrorCode Ġ= ĠjsonObject . opt Int (" errorCode ") ĊĠĠĠĠĠĠĠ Ġ// å¯¹äºİ ä¸ļåĬ¡ æĪĲåĬŁ çļĦ æĥħåĨµ ä¸į åģļ å¤ĦçĲĨ ĊĠĠĠĠĠĠĠ Ġif Ġ( errorCode Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// æĪĳä»¬çļĦ ç¤ºä¾ĭ éĩĮ æľįåĬ¡åĻ¨ æ²¡æľī è¿ĶåĽŀ error Msg , ä¸ĢèĪ¬ å®ŀéĻħ åºĶçĶ¨ ä¸Ń æľįåĬ¡åĻ¨ éĥ½ä¼ļ æľī error Msg ĊĠĠĠĠĠĠĠ Ġthrow ĠApiException ( errorCode , Ġ" some Ġerror Ġmsg ") ĊĠĠĠ Ġ} Ċ Ċ }