java - How to print client's original post string to the log when meeting HttpMessageNotReadableException in sprintmvc -
when post valid json spring mvc, works well. if json missing quote or otherwise invalid. server throw exception named httpmessagenotreadableexception useful information, doesn't show json sent, testers need know.
for example, post invalid json string: (missing quotes after "code" property)
{ "problemid": "1", "language": 1, "code": test", "userid": "s1001", "otherid": "test01", "access_token": "de96a12-1c1f-40b9-8e2a-a3b86c17fd31" } the server log error is:
could not read document: unexpected character ('#' (code 35)): expected valid value (number, string, array, object, 'true', 'false' or 'null') org.springframework.http.converter.httpmessagenotreadableexception: not read document: unexpected character ('#' (code 35)): expected valid value (number, string, array, object, 'true', 'false' or 'null') @ [source: java.io.pushbackinputstream@fe0bb0e; line: 4, column: 14]; nested exception com.fasterxml.jackson.core.jsonparseexception: unexpected character ('#' (code 35)): expected valid value (number, string, array, object, 'true', 'false' or 'null') @ [source: java.io.pushbackinputstream@fe0bb0e; line: 4, column: 14]; nested exception com.fasterxml.jackson.core.jsonparseexception: unexpected character ('#' (code 35)): expected valid value (number, string, array, object, 'true', 'false' or 'null') @ [source: java.io.pushbackinputstream@fe0bb0e; line: 4, column: 14] @ [source: java.io.pushbackinputstream@fe0bb0e; line: 4, column: 14] @ org.springframework.http.converter.json.abstractjackson2httpmessageconverter.readjavatype(abstractjackson2httpmessageconverter.java:229) @ org.springframework.http.converter.json.abstractjackson2httpmessageconverter.read(abstractjackson2httpmessageconverter.java:213) @ org.springframework.web.servlet.mvc.method.annotation.abstractmessageconvertermethodargumentresolver.readwithmessageconverters(abstractmessageconvertermethodargumentresolver.java:197) @ org.springframework.web.servlet.mvc.method.annotation.requestresponsebodymethodprocessor.readwithmessageconverters(requestresponsebodymethodprocessor.java:147) @ org.springframework.web.servlet.mvc.method.annotation.requestresponsebodymethodprocessor.resolveargument(requestresponsebodymethodprocessor.java:125) @ org.springframework.web.method.support.handlermethodargumentresolvercomposite.resolveargument(handlermethodargumentresolvercomposite.java:99) @ org.springframework.web.method.support.invocablehandlermethod.getmethodargumentvalues(invocablehandlermethod.java:161) @ org.springframework.web.method.support.invocablehandlermethod.invokeforrequest(invocablehandlermethod.java:128) @ org.springframework.web.servlet.mvc.method.annotation.servletinvocablehandlermethod.invokeandhandle(servletinvocablehandlermethod.java:110) @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.invokehandlermethod(requestmappinghandleradapter.java:832) @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.handleinternal(requestmappinghandleradapter.java:743) @ org.springframework.web.servlet.mvc.method.abstracthandlermethodadapter.handle(abstracthandlermethodadapter.java:85) @ org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:961) @ org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:895) @ org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:967) @ org.springframework.web.servlet.frameworkservlet.dopost(frameworkservlet.java:869) @ javax.servlet.http.httpservlet.service(httpservlet.java:648) @ org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:843) @ javax.servlet.http.httpservlet.service(httpservlet.java:729) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:291) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.springframework.web.filter.hiddenhttpmethodfilter.dofilterinternal(hiddenhttpmethodfilter.java:77) @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.springframework.web.filter.characterencodingfilter.dofilterinternal(characterencodingfilter.java:121) @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:217) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:106) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:502) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:142) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:79) @ org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:616) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:88) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:518) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1091) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:673) @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.dorun(nioendpoint.java:1500) @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.run(nioendpoint.java:1456) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) @ java.lang.thread.run(thread.java:745) caused by: com.fasterxml.jackson.core.jsonparseexception: unexpected character ('#' (code 35)): expected valid value (number, string, array, object, 'true', 'false' or 'null') @ [source: java.io.pushbackinputstream@fe0bb0e; line: 4, column: 14] @ com.fasterxml.jackson.core.jsonparser._constructerror(jsonparser.java:1586) @ com.fasterxml.jackson.core.base.parserminimalbase._reporterror(parserminimalbase.java:521) @ com.fasterxml.jackson.core.base.parserminimalbase._reportunexpectedchar(parserminimalbase.java:450) @ com.fasterxml.jackson.core.json.utf8streamjsonparser._handleunexpectedvalue(utf8streamjsonparser.java:2628) @ com.fasterxml.jackson.core.json.utf8streamjsonparser.nextfieldname(utf8streamjsonparser.java:1069) @ com.fasterxml.jackson.databind.deser.beandeserializer.deserializefromobject(beandeserializer.java:348) @ com.fasterxml.jackson.databind.deser.beandeserializer.deserialize(beandeserializer.java:133) @ com.fasterxml.jackson.databind.objectmapper._readmapandclose(objectmapper.java:3807) @ com.fasterxml.jackson.databind.objectmapper.readvalue(objectmapper.java:2881) @ org.springframework.http.converter.json.abstractjackson2httpmessageconverter.readjavatype(abstractjackson2httpmessageconverter.java:226) ... 47 more how can print client's whole post json string log also?
Comments
Post a Comment