java - 415 Unsupported Media Type when I send json to spring controller -
i send post http request "content-type" "application/json" controller
i have following dependencies:
<!--json--> <dependency> <groupid>org.codehaus.jackson</groupid> <artifactid>jackson-mapper-asl</artifactid> </dependency> <dependency> <groupid>org.codehaus.jackson</groupid> <artifactid>jackson-core-asl</artifactid> </dependency> the following controler method:
@requestmapping(value = "senddata.json", method = requestmethod.post, consumes = "application/json") @responsestatus(httpstatus.no_content) public void putjsondata(@requestbody requestresponsewrapper requestresponsewrapper) { ... } requestresponsewrapper , classes inside has default constructors
and see following spring log:
4751 [qtp333509504-16] trace o.s.web.servlet.dispatcherservlet - bound request context thread: (post //localhost:8087/mycompanymocks/mvc/***/senddata.json)@883530709 org.eclipse.jetty.server.request@34a99bd5 4751 [qtp333509504-16] debug o.s.web.servlet.dispatcherservlet - dispatcherservlet name 'spring mvc dispatcher servlet' processing post request [/mycompanymocks/mvc/***/senddata.json] 4753 [qtp333509504-16] trace o.s.web.servlet.dispatcherservlet - testing handler map [org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping@536d6f00] in dispatcherservlet name 'spring mvc dispatcher servlet' 4754 [qtp333509504-16] debug o.s.w.s.m.m.a.requestmappinghandlermapping - looking handler method path /***/senddata.json 4755 [qtp333509504-16] trace o.s.w.s.m.m.a.requestmappinghandlermapping - found 1 matching mapping(s) [/***/senddata.json] : [{[/***/senddata.json],methods=[post],params=[],headers=[],consumes=[application/json],produces=[],custom=[]}] 4756 [qtp333509504-16] debug o.s.w.s.m.m.a.requestmappinghandlermapping - returning handler method [public void com.mycompany.mocks.***.controller.***controller.putjsondata(com.mycompany.mocks.***.dto.***.requestresponsewrapper)] 4756 [qtp333509504-16] debug o.s.b.f.s.defaultlistablebeanfactory - returning cached instance of singleton bean '***controller' 4756 [qtp333509504-16] trace o.s.web.servlet.dispatcherservlet - testing handler adapter [org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter@1f878a58] 7759 [qtp333509504-16] trace o.s.w.m.annotation.modelfactory - selected @modelattribute method public com.mycompany.mocks.***.dto.***.requestresponsewrapper com.mycompany.mocks.***.controller.***controller.createrequestresponsewrapper() 8485 [qtp333509504-16] trace o.s.w.m.s.invocablehandlermethod - invoking [***controller.createrequestresponsewrapper] method arguments [] 8485 [qtp333509504-16] trace o.s.w.m.s.invocablehandlermethod - method [createrequestresponsewrapper] returned [com.mycompany.mocks.***.dto.***.requestresponsewrapper@2f033262] 9339 [qtp333509504-16] trace o.s.w.m.s.handlermethodargumentresolvercomposite - testing if argument resolver [org.springframework.web.method.annotation.requestparammethodargumentresolver@2d121a3f] supports [class com.mycompany.mocks.***.dto.***.requestresponsewrapper] 9340 [qtp333509504-16] trace o.s.w.m.s.handlermethodargumentresolvercomposite - testing if argument resolver [org.springframework.web.method.annotation.requestparammapmethodargumentresolver@24ecc563] supports [class com.mycompany.mocks.***.dto.***.requestresponsewrapper] 9340 [qtp333509504-16] trace o.s.w.m.s.handlermethodargumentresolvercomposite - testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.pathvariablemethodargumentresolver@20b32d70] supports [class com.mycompany.mocks.***.dto.***.requestresponsewrapper] 9340 [qtp333509504-16] trace o.s.w.m.s.handlermethodargumentresolvercomposite - testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.pathvariablemapmethodargumentresolver@2448f6ff] supports [class com.mycompany.mocks.***.dto.***.requestresponsewrapper] 9340 [qtp333509504-16] trace o.s.w.m.s.handlermethodargumentresolvercomposite - testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.matrixvariablemethodargumentresolver@1da997ab] supports [class com.mycompany.mocks.***.dto.***.requestresponsewrapper] 9341 [qtp333509504-16] trace o.s.w.m.s.handlermethodargumentresolvercomposite - testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.matrixvariablemapmethodargumentresolver@12cb0241] supports [class com.mycompany.mocks.***.dto.***.requestresponsewrapper] 9341 [qtp333509504-16] trace o.s.w.m.s.handlermethodargumentresolvercomposite - testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.servletmodelattributemethodprocessor@430ecb7c] supports [class com.mycompany.mocks.***.dto.***.requestresponsewrapper] 9341 [qtp333509504-16] trace o.s.w.m.s.handlermethodargumentresolvercomposite - testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.requestresponsebodymethodprocessor@3841236] supports [class com.mycompany.mocks.***.dto.***.requestresponsewrapper] 9652 [qtp333509504-16] trace o.s.w.s.m.m.a.servletinvocablehandlermethod - error resolving argument [0] [type=com.mycompany.mocks.***.dto.***.requestresponsewrapper] handlermethod details: controller [com.mycompany.mocks.***.controller.***controller] method [public void com.mycompany.mocks.***.controller.***controller.putjsondata(com.mycompany.mocks.***.dto.***.requestresponsewrapper)] org.springframework.web.httpmediatypenotsupportedexception: content type 'application/json;charset=utf-8' not supported @ org.springframework.web.servlet.mvc.method.annotation.abstractmessageconvertermethodargumentresolver.readwithmessageconverters(abstractmessageconvertermethodargumentresolver.java:158) ~[spring-webmvc-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.servlet.mvc.method.annotation.requestresponsebodymethodprocessor.readwithmessageconverters(requestresponsebodymethodprocessor.java:149) ~[spring-webmvc-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.servlet.mvc.method.annotation.requestresponsebodymethodprocessor.resolveargument(requestresponsebodymethodprocessor.java:100) ~[spring-webmvc-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.method.support.handlermethodargumentresolvercomposite.resolveargument(handlermethodargumentresolvercomposite.java:77) ~[spring-web-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.method.support.invocablehandlermethod.getmethodargumentvalues(invocablehandlermethod.java:162) [spring-web-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.method.support.invocablehandlermethod.invokeforrequest(invocablehandlermethod.java:129) [spring-web-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.servlet.mvc.method.annotation.servletinvocablehandlermethod.invokeandhandle(servletinvocablehandlermethod.java:110) [spring-webmvc-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.invokehandlemethod(requestmappinghandleradapter.java:776) [spring-webmvc-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.handleinternal(requestmappinghandleradapter.java:705) [spring-webmvc-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.servlet.mvc.method.abstracthandlermethodadapter.handle(abstracthandlermethodadapter.java:85) [spring-webmvc-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:959) [spring-webmvc-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:893) [spring-webmvc-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:966) [spring-webmvc-4.1.6.release.jar:4.1.6.release] @ org.springframework.web.servlet.frameworkservlet.dopost(frameworkservlet.java:868) [spring-webmvc-4.1.6.release.jar:4.1.6.release] @ javax.servlet.http.httpservlet.service(httpservlet.java:707) [javax.servlet-api-3.1.0.jar:3.1.0] @ org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:842) [spring-webmvc-4.1.6.release.jar:4.1.6.release] @ javax.servlet.http.httpservlet.service(httpservlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0] @ org.eclipse.jetty.servlet.servletholder.handle(servletholder.java:806) [jetty-servlet-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.servlet.servlethandler.dohandle(servlethandler.java:587) [jetty-servlet-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.handler.scopedhandler.handle(scopedhandler.java:143) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.security.securityhandler.handle(securityhandler.java:550) [jetty-security-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.session.sessionhandler.dohandle(sessionhandler.java:223) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.handler.contexthandler.dohandle(contexthandler.java:1128) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.servlet.servlethandler.doscope(servlethandler.java:515) [jetty-servlet-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.session.sessionhandler.doscope(sessionhandler.java:185) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.handler.contexthandler.doscope(contexthandler.java:1062) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.handler.scopedhandler.handle(scopedhandler.java:141) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.handler.contexthandlercollection.handle(contexthandlercollection.java:215) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.handler.handlercollection.handle(handlercollection.java:110) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.handler.handlerwrapper.handle(handlerwrapper.java:113) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.server.handle(server.java:507) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.httpchannel.handle(httpchannel.java:284) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.server.httpconnection.onfillable(httpconnection.java:237) [jetty-server-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.io.abstramycompanyonnection$readcallback.succeeded(abstramycompanyonnection.java:240) [jetty-io-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.io.fillinterest.fillable(fillinterest.java:93) [jetty-io-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.io.selemycompanyhannelendpoint$2.run(selemycompanyhannelendpoint.java:53) [jetty-io-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.util.thread.strategy.executeproducerun.produceandrun(executeproducerun.java:191) [jetty-util-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.util.thread.strategy.executeproducerun.run(executeproducerun.java:126) [jetty-util-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.util.thread.queuedthreadpool.runjob(queuedthreadpool.java:641) [jetty-util-9.3.0.m2.jar:9.3.0.m2] @ org.eclipse.jetty.util.thread.queuedthreadpool$3.run(queuedthreadpool.java:559) [jetty-util-9.3.0.m2.jar:9.3.0.m2] @ java.lang.thread.run(thread.java:745) [na:1.8.0_25] 9756 [qtp333509504-16] debug o.s.w.s.m.m.a.exceptionhandlerexceptionresolver - resolving exception handler [public void com.mycompany.mocks.***.controller.***controller.putjsondata(com.mycompany.mocks.***.dto.***.requestresponsewrapper)]: org.springframework.web.httpmediatypenotsupportedexception: content type 'application/json;charset=utf-8' not supported 9758 [qtp333509504-16] debug o.s.w.s.m.a.responsestatusexceptionresolver - resolving exception handler [public void com.mycompany.mocks.***.controller.***controller.putjsondata(com.mycompany.mocks.***.dto.***.requestresponsewrapper)]: org.springframework.web.httpmediatypenotsupportedexception: content type 'application/json;charset=utf-8' not supported 9758 [qtp333509504-16] debug o.s.w.s.m.s.defaulthandlerexceptionresolver - resolving exception handler [public void com.mycompany.mocks.***.controller.***controller.putjsondata(com.mycompany.mocks.***.dto.***.requestresponsewrapper)]: org.springframework.web.httpmediatypenotsupportedexception: content type 'application/json;charset=utf-8' not supported 9769 [qtp333509504-16] debug o.s.web.servlet.dispatcherservlet - null modelandview returned dispatcherservlet name 'spring mvc dispatcher servlet': assuming handleradapter completed request handling 9769 [qtp333509504-16] trace o.s.web.servlet.dispatcherservlet - cleared thread-bound request context: [post //localhost:8087/mycompanymocks/mvc/***/senddata.json]@883530709 org.eclipse.jetty.server.request@34a99bd5 9769 [qtp333509504-16] debug o.s.web.servlet.dispatcherservlet - completed request 9769 [qtp333509504-16] trace o.s.w.c.s.xmlwebapplicationcontext - publishing event in webapplicationcontext namespace 'spring mvc dispatcher servlet-servlet': servletrequesthandledevent: url=[/mycompanymocks/mvc/***/senddata.json]; client=[0:0:0:0:0:0:0:1]; method=[post]; servlet=[spring mvc dispatcher servlet]; session=[null]; user=[null]; time=[5027ms]; status=[ok] i spent lot of time debug spring cannot understand wrong.
i found problem cause
i had 2 fields names sku , sku , respecive set methods.
jackson cannot accept following mess in naming
p.s. spring provides confusing error message
Comments
Post a Comment