restful call Неверный формат MediaType для MediaType: "*; q = .2" - PullRequest
1 голос
/ 12 января 2011

Попытка выполнить restful веб-сервис, используя метод POST. Вот соответствующая часть моего интерфейса:

@Path("/customers")
public interface CustomerResource {
 @POST
 @Consumes(MediaType.APPLICATION_XML)
 public Response createCustomer(InputStream is);
        .....
}

Реализация:

 // Create customer
 public Response createCustomer(InputStream is) {
  logger.debug("In createCustomer");
  Customer customer = readCustomer(is);
  customer.setId(idCounter.incrementAndGet());
  customerDB.put(customer.getId(), customer);
  logger.debug("Created customer " + customer.getId());
  logger.debug("Out createCustomer");
  return Response.created(URI.create("/customers/"
    + customer.getId())).build();
 }

Клиент звонит (соответствующая часть)

  URL postUrl = new URL("http://localhost:8080/ShoppingApplication/rest/customers");
  HttpURLConnection connection =
  (HttpURLConnection) postUrl.openConnection();
  connection.setDoOutput(true);
  connection.setInstanceFollowRedirects(false);
  connection.setRequestMethod("POST");
  connection.setRequestProperty("Content-Type", "application/xml");
  OutputStream os = connection.getOutputStream();
  os.write(newCustomer.getBytes());
  os.flush();

Вот мой web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>My Shop</display-name>
    <servlet>
        <servlet-name>MyShopping</servlet-name>
        <servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.restfully.shop.services.ShoppingApplication</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyShopping</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

Когда я звоню, все, что я получаю, это огромное исключение, которое на самом деле говорит: ИНФОРМАЦИЯ: WebApplicationException (404 - не найдено) произошла во время вызова цепочки обработчиков javax.ws.rs.WebApplicationException в org.apache.wink.server.internal.handlers.FindRootResourceHandler.handleRequest (FindRootResourceHandler.java:60) в org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:26) в org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:22) в org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) в org.apache.wink.server.internal.handlers.HeadMethodHandler.handleRequest (HeadMethodHandler.java:47) в org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:26) в org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:22) в org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) в org.apache.wink.server.internal.handlers.OptionsMethodHandler.handleRequest (OptionsMethodHandler.java:42) в org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:26) в org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:22) в org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) в org.apache.wink.server.internal.handlers.SearchResultHandler.handleRequest (SearchResultHandler.java:33) в org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:26) в org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:22) в org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) в org.apache.wink.server.handlers.AbstractHandlersChain.run (AbstractHandlersChain.java:43) в org.apache.wink.server.internal.RequestProcessor.handleRequestWithoutFaultBarrier (RequestProcessor.java:136) в org.apache.wink.server.internal.RequestProcessor.handleRequest (RequestProcessor.java:117) в org.apache.wink.server.internal.servlet.RestServlet.service (RestServlet.java:102) на javax.servlet.http.HttpServlet.service (HttpServlet.java:722) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:304) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:240) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:203) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:164) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:108) в org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:558) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:379) в org.apache.coyote.http11.Http11AprProcessor.process (Http11AprProcessor.java:281) в org.apache.coyote.http11.Http11AprProtocol $ Http11ConnectionHandler.process (Http11AprProtocol.java:357) в org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.run (AprEndpoint.java:1671) в java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (Неизвестный источник) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (неизвестный источник) at java.lang.Thread.run (неизвестный источник) 12 января 2011 г. 9:47:35 утра org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate fromStringSEVERE: неправильный формат MediaType для MediaType: "; q = .2" 12 января 2011 г. 9:47:35 утра org.apache.wink.server.internal.RequestProcessor handleRequest SEVERE: необработанное исключение java.lang.IllegalArgumentException: неправильный формат MediaType для MediaType: "; q = .2" на org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate.fromString (MediaTypeHeaderDelegate.java:67) на org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate.fromString (MediaTypeHeaderDelegate.java:32) в javax.ws.rs.core.MediaType.valueOf (MediaType.java:119) в org.apache.wink.common.internal.providers.header.AcceptHeaderDelegate.fromString (AcceptHeaderDelegate.java:47) в org.apache.wink.common.internal.providers.header.AcceptHeaderDelegate.fromString (AcceptHeaderDelegate.java:32) на org.apache.wink.common.internal.http.Accept.valueOf (Accept.java:139) в org.apache.wink.server.internal.contexts.HttpHeadersImpl.getAcceptHeader (HttpHeadersImpl.java:115) в org.apache.wink.server.internal.contexts.HttpHeadersImpl.getAcceptableMediaTypes (HttpHeadersImpl.java:84) в org.apache.wink.server.internal.handlers.PopulateResponseMediaTypeHandler.handleResponse (PopulateResponseMediaTypeHandler.java:82) в org.apache.wink.server.handlers.AbstractHandler.handleResponse (AbstractHandler.java:38) в org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:26) в org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:22) в org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) в org.apache.wink.server.handlers.AbstractHandler.handleResponse (AbstractHandler.java:39) в org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:26) в org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:22) в org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) в org.apache.wink.server.handlers.AbstractHandler.handleResponse (AbstractHandler.java:39) в org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:26) в org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:22) в org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) в org.apache.wink.server.handlers.AbstractHandlersChain.run (AbstractHandlersChain.java:43) в org.apache.wink.server.internal.RequestProcessor.handleRequestWithoutFaultBarrier (RequestProcessor.java:145) в org.apache.wink.server.internal.RequestProcessor.handleRequest (RequestProcessor.java:117) в org.apache.wink.server.internal.servlet.RestServlet.service (RestServlet.java:102) на javax.servlet.http.HttpServlet.service (HttpServlet.java:722) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:304) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:240) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:203) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:164) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:108) в org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:558) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:379) в org.apache.coyote.http11.Http11AprProcessor.process (Http11AprProcessor.java:281) в org.apache.coyote.http11.Http11AprProtocol $ Http11ConnectionHandler.process (Http11AprProtocol.java:357) в org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.run (AprEndpoint.java:1671)в java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (Неизвестный источник) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (неизвестный источник) at java.lang.Thread.run (неизвестный источник) Вызывается: java.lang.ArrayIndexOutOfBoundsException: 1 на org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate.fromString (MediaTypeHeaderDelegate.java:54) ... еще 40

Ответы [ 2 ]

1 голос
/ 12 января 2011

Как я вижу в коде вашего клиента, вы закомментировали тип контента.
Зачем? Какой тип контента вы отправляете?
В любом случае правильный тип носителя должен быть */*;q=0.2

Кстати, какую версию Wink вы используете? Я думаю, что последняя версия более простительна в отношении ошибок типов медиа.

0 голосов
/ 23 октября 2013

Эта ошибка вызвана конфликтом файла jar. Я удалил jetty.jar, jetty-util.jar, а также удалил jsr305.jar, REST API просто отлично работает.Надеюсь, это поможет вам.

...