2016-01-24 4 views
0

Я получаю java.lang.IllegalArgumentException: ошибка разбора типа медиа-приложения 'application/json, application/x-www-form-urlencoded', когда пытается передать х-WWW-форм-urlencoded ресурсу классНевозможно передать @FormParam на Джерси-сервер с джерси 1.x и весной 4

трассировки стека

javax.ws.rs.WebApplicationException: java.lang.IllegalArgumentException: Error parsing media type 'application/json, application/x-www-form-urlencoded' 
    at com.sun.jersey.server.impl.model.HttpHelper.clientError(HttpHelper.java:265) 
    at com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:91) 
    at com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:77) 
    at com.sun.jersey.spi.container.ContainerRequest.getMediaType(ContainerRequest.java:646) 
    at com.sun.jersey.spi.container.servlet.WebComponent.filterFormParameters(WebComponent.java:832) 
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:407) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:445) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:556) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) 
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 
    at org.eclipse.jetty.server.Server.handle(Server.java:367) 
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486) 
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937) 
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998) 
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861) 
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) 
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.IllegalArgumentException: Error parsing media type 'application/json, application/x-www-form-urlencoded' 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:79) 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:53) 
    at javax.ws.rs.core.MediaType.valueOf(MediaType.java:119) 
    at com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:89) 
    ... 32 more 
Caused by: java.text.ParseException: Expected separator ';' instead of ',' 
    at com.sun.jersey.core.header.reader.HttpHeaderReader.nextSeparator(HttpHeaderReader.java:117) 
    at com.sun.jersey.core.header.reader.HttpHeaderReader.readParameters(HttpHeaderReader.java:239) 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.valueOf(MediaTypeProvider.java:97) 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:77) 
    ... 35 more 
Caused by: 

java.lang.IllegalArgumentException: Error parsing media type 'application/json, application/x-www-form-urlencoded' 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:79) 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:53) 
    at javax.ws.rs.core.MediaType.valueOf(MediaType.java:119) 
    at com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:89) 
    at com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:77) 
    at com.sun.jersey.spi.container.ContainerRequest.getMediaType(ContainerRequest.java:646) 
    at com.sun.jersey.spi.container.servlet.WebComponent.filterFormParameters(WebComponent.java:832) 
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:407) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:445) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:556) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) 
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 
    at org.eclipse.jetty.server.Server.handle(Server.java:367) 
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486) 
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937) 
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998) 
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861) 
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) 
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.text.ParseException: Expected separator ';' instead of ',' 
    at com.sun.jersey.core.header.reader.HttpHeaderReader.nextSeparator(HttpHeaderReader.java:117) 
    at com.sun.jersey.core.header.reader.HttpHeaderReader.readParameters(HttpHeaderReader.java:239) 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.valueOf(MediaTypeProvider.java:97) 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:77) 
    ... 35 more 
Caused by: 

java.text.ParseException: Expected separator ';' instead of ',' 
    at com.sun.jersey.core.header.reader.HttpHeaderReader.nextSeparator(HttpHeaderReader.java:117) 
    at com.sun.jersey.core.header.reader.HttpHeaderReader.readParameters(HttpHeaderReader.java:239) 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.valueOf(MediaTypeProvider.java:97) 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:77) 
    at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:53) 
    at javax.ws.rs.core.MediaType.valueOf(MediaType.java:119) 
    at com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:89) 
    at com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:77) 
    at com.sun.jersey.spi.container.ContainerRequest.getMediaType(ContainerRequest.java:646) 
    at com.sun.jersey.spi.container.servlet.WebComponent.filterFormParameters(WebComponent.java:832) 
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:407) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:445) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:556) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) 
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 
    at org.eclipse.jetty.server.Server.handle(Server.java:367) 
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486) 
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937) 
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998) 
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861) 
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) 
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) 
    at java.lang.Thread.run(Thread.java:745) 

JAVA Класс ресурсов код:

@Path("/initiate") 
    @POST 
    @Consumes({MediaType.APPLICATION_FORM_URLENCODED}) 
    public void initiate(@FormParam("id") String transactionId) throws IOException { 
    logger.info("transactionId : " + transactionId); 
    // some logic 

    } 

pom.xml зависимостей:

<!-- Jersey dependencies --> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.13</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-bundle</artifactId> 
     <version>1.13</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-json</artifactId> 
     <version>1.13</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>1.13</version> 
     <scope>test</scope> 
    </dependency> 

    <!-- Jersey spring --> 
    <dependency> 
     <groupId>com.sun.jersey.contribs</groupId> 
     <artifactId>jersey-spring</artifactId> 
     <version>1.13</version> 
     <exclusions> 
     <exclusion> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 


    <!-- Spring framework dependencies --> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.2.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.2.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>4.2.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 

Я сделал много поиска Google, но не могу найти подобный вопрос, и я новичок в весенний и трикотаж. Пожалуйста помоги.

+0

не могли бы вы наклеивать вне заявку приложения.wadl –

+0

Как вы отправили запрос? 'Content-Type: application/json, application/x-www-form-urlencoded'? –

+0

спасибо ** peeskillet ** для указание этого. – archit

ответ

0

У меня был предварительно сохраненный Content-Type: application/json. Из-за этого Content-Type: application/json, application/x-www-form-urlencoded проходил как контент-тип. Исправлено. Теперь он работает отлично.