package Ġcom . smart . starter . ide . ad vice Ċ Ċ import Ġcom . alibaba . fastjson . JSON Ċ import Ġcom . smart . starter . ide . annotation . Parameter Security Ċ import Ġcom . smart . starter . ide . util . IDE Utils Ċ import Ġorg . apache . commons . io . IO Utils Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . core . Method Parameter Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . Http Input Message Ċ import Ġorg . springframework . http . converter . Http Message Converter Ċ import Ġorg . springframework . web . bind . annotation . Controller Ad vice Ċ import Ġorg . springframework . web . servlet . mvc . method . annotation . RequestBody Ad vice Ċ import Ġjava . io . InputStream Ċ import Ġjava . lang . reflect . Type Ċ import Ġjava . nio . charset . Charset ĊĊ Ċ /** Ċ Ġ* ĠåıĤæķ° è§£ å¯Ĩ Ċ Ġ* Ġ@ author Ġzh ong ming Ċ Ġ*/ Ċ @ Controller Ad vice Ċ class ĠR sa Decode RequestBody Ad vice : ĠRequest Body Ad vice Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= ĠLoggerFactory . getLogger ( R sa Decode RequestBody Ad vice Ġ:: Ġclass . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter Body Read ( body : ĠAny , Ġinput Message : ĠHttp Input Message , Ġmethod Parameter : ĠMethod Parameter , Ġtype : ĠType , Ġclazz : ĠClass < out ĠHttp Message Converter <* >> ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbody ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore Body Read ( input Message : ĠHttp Input Message , Ġmethod Parameter : ĠMethod Parameter , Ġtype : ĠType , Ġclazz : ĠClass < out ĠHttp Message Converter <* >> ): ĠHttp Input Message Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġæĺ¯åĲ¦ éľĢè¦ģ è§£ å¯Ĩ ĊĠĠĠĠĠĠĠ Ġvar Ġencode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( method Parameter . method ?. is Annotation Present ( Parameter Security Ġ:: Ġclass . java ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ æ³¨è§£ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrsa Security Ġ= Ġmethod Parameter . getMethod Annotation ( Parameter Security Ġ:: Ġclass . java ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencode Ġ= Ġrsa Security . in Decode ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( encode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSecurity Http Input Message ( input Message , ĠJSON . toJSON String ( IDE Utils . get () !!. data !! )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinput Message ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Empty Body ( p 0 : ĠAny ?, Ġinput Message : ĠHttp Input Message , Ġmethod Parameter : ĠMethod Parameter , Ġp 3 : ĠType , Ġp 4 : ĠClass < out ĠHttp Message Converter <* >> ): ĠAny ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġp 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsupports ( p 0 : ĠMethod Parameter , Ġp 1 : ĠType , Ġp 2 : ĠClass < out ĠHttp Message Converter <* >> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĶ¨æĪ· ç§ ĺ éĴ¥ ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĬłå¯Ĩ çļĦ Http Input Message ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠSecurity Http Input Message Ġ// ĠéĢļè¿ĩ ç§ģ éĴ¥ è¿Ľè¡Į è§£ å¯Ĩ ĊĠĠĠ Ġ( input Message : ĠHttp Input Message , Ġdata : ĠString ) Ġ: ĠHttp Input Message Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġheaders : ĠHttp Headers Ġ= Ġinput Message . headers ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġbody : ĠInputStream Ġ= ĠIO Utils . to InputStream ( data , ĠCharset . forName (" UTF - 8 ")) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠHttp Headers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . headers ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Body (): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . body ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }