2016-05-14 9 views
0

I Frühling bin ein Upgrade von Version 3 (XML-basiert) bis 4.2.4 (Anmerkung basiert)Fehler 415 - Nicht unterstützter Medientyp mit Spring 4

-Controller

@RestController 
public class XnetOrderResourceController{ 
    @Autowired 
    private XnetOrderDao orderDao; 

    /* 
    * GET All Orders 
    */ 
    @RequestMapping(value = "/getAllOrdersInfo", method =RequestMethod.GET, produces="application/json") 
    public XnetOrder get(@RequestParam("Id") Long Id) { 
     XnetOrder order=null; 
     try{ 
      if(MiscUtils.isNotEmpty(Id)){ 
       order=orderDao.get(Id); 
      } 
     }catch(HibernateException e){ 
      log.info(ORDER_DETAIL_NOT_AVAILABLE); 
      getLogger().error(e.getMessage()); 
     } 

     return order; 
    } 

    /* 
    * POST(create new) Orders 
    */ 
    @RequestMapping(value = "/insertOrders", method =RequestMethod.POST, consumes="application/json", produces="application/json") 
    public void post(@RequestBody XnetOrder order){ 
     try{    
      orderDao.post(order); 
     }catch(HibernateException e){ 
      log.info("Creating the Order operation failed."); 
      getLogger().error(e.getMessage()); 
     } 
    } 

    /* 
     * PUT (update) orders 
     */ 
    @RequestMapping(value="/updateOrders", method=RequestMethod.PUT, consumes="application/json", produces="application/json") 
    public XnetOrder update(@RequestBody XnetOrder order){ 
     try{ 
      order=orderDao.put(order); 
     }catch(HibernateException e){ 
      getLogger().error(e.getMessage()); 
     } 

     return order; 
    } 

    /* 
    * DELETE orders 
    */ 
    @RequestMapping(value="/deleteOrders",method=RequestMethod.DELETE) 
    public void delete(@RequestParam("Id") Long Id){ 
     try{ 
      if(MiscUtils.isNotEmpty(Id)){ 
       orderDao.delete(Id); 
       log.info("Order is successfully deleted"); 
      } 
     }catch(HibernateException e){ 
      log.info(XNET_PRODUCT_INVALID_ERROR_MESSAGE); 
      getLogger().error(e.getMessage()); 
     } 
    } 
} 

Spring-Servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 

    xsi:schemaLocation="http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd"> 

    <context:annotation-config /> 
    <context:component-scan base-package="com.nest.extranet" /> 

    <mvc:annotation-driven 
     content-negotiation-manager="contentNegotiationManager"> 
     <mvc:message-converters> 
      <bean class="org.springframework.http.converter.StringHttpMessageConverter" /> 
      <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /> 
     </mvc:message-converters> 
    </mvc:annotation-driven> 
    <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> 
     <property name="favorPathExtension" value="false" /> 
     <property name="favorParameter" value="true" /> 
     <property name="mediaTypes"> 
      <value> 
       json=application/json 
      </value> 
     </property> 
    </bean> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass" 
      value="org.springframework.web.servlet.view.JstlView" /> 
     <property name="prefix" value="/WEB-INF/views/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 
</beans> 

JAR-Dateien in meinem Classpath sind -

jackson-annotations-2.2.3.jar, 
jackson-core-2.2.3.jar, 
jackson-databind-2.3.3.jar, 
jackson-mapper-asl-1.9.13.jar, 
jackson-2.1.0-all.jar 

Ich bin in der Lage GET Operation auszuführen, die JSON-Wert erfolgreich zurückgegeben wird, aber PUT und POST Operationen nicht funktionieren. Ich benutze Postman als REST-Client. Ich habe auch versucht, für PUT Betrieb die URL übergeben, nachdem der Header-Wert Content-Type zu aplication/json Einstellung, aber es gibt immer

Fehler 415 - Nicht unterstützter Medientyp.

Ich erhalte folgende Antwort-Header:

Connection  → close 
Content-Length → 903 
Content-Type → text/html; charset=UTF-8 
Date   → Sat, 14 May 2016 09:16:57 GMT 
X-Powered-By → Servlet/2.5 JSP/2.1 

Kann jemand bitte vorschlagen, wie PUT und POST Operationen zu arbeiten?

Antwort

0

Wenn Sie für die Controller-Methode produces angeben, müssen Sie auch die Kopfzeile Accepts für die Anforderung festlegen.

+0

Ich habe versucht mit nur konsumiert auch. Das gleiche Problem ist immer noch da. Die Steuerung kommt nie zur Aktualisierung der Methode. –

+0

Versuchen Sie '' format = json' zu Ihrer URL hinzuzufügen. Wenn das klappt, dann macht dein Content-Negotiation-Manager mit Sachen rum. Personen, die normalerweise angeben, konsumieren/produzieren in den Annotationen der Verwendung des Verhandlungsmanagers, nicht beides –