Tengo el siguiente código en el RESTO, Spring MVC. Este código se supone que devuelve un JSON tipo de estructura de datos llamada ResponseText:

@RequestMapping(value="/movieTheater", headers = {"ACCEPT=*/*"}, method=RequestMethod.GET)
public @ResponseBody ResponseText getCustomerInput(@RequestParam("name") String name, @RequestParam("price") Double price) {
    Transaction transaction = new Transaction();
    ResponseText result = new ResponseText();

    transaction.setMovieName(name);
    transaction.setTicketPrice(price);
    transaction.setDatetime(new Date());

    if(transactionService.addTransaction(transaction))
        result.setMessage(ResponseStatus.SUCCESS.getStatus());
    else
        result.setMessage(ResponseStatus.FAILED.getStatus());
    return result;
} 

Pero cuando estoy en la ejecución de este código a través de la siguiente URL en el navegador, estoy recibiendo el siguiente error:

URL:

http://localhost:8080/SpringMVCMerchant/movieTheater.htm?name=Smurfs&price=300.00

De Error:

HTTP Status 406 -

type Status report

message

description The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.

Soy incapaz de identificar lo que estoy haciendo mal aquí. Busqué en la Red que explican este error, pero todavía no sé de qué me estoy perdiendo. Yo he dado a ACEPTAR=»/«, que se supone que para cubrir todo tipo de respuestas, ¿verdad?
Por favor, ayuda!
Gracias de antemano!

** Cuando he añadido el encabezado

headers={"Accept: application/json, text/javascript"} 

lugar de la de arriba, tengo el siguiente error:

HTTP Status 405 - Request method 'GET' not supported
tengo el mismo problema y acabo de añadir <mvc:annotation-driven/> en mi mvc-dispatcher-servlet.xml mi problema está solucionado, yo no no ¿cuál es el problema, pero puede ayudar u ..
Gracias por su respuesta. He intentado esto. Todavía no está trabajando.
Tal vez intentar usar «ContentNegotiatingViewResolver». mkyong.com/spring-mvc/…
La utilizan. Sigue recibiendo el mismo error.
se resolvió?

OriginalEl autor kajarigd | 2013-08-11

6 Comentarios

  1. 3

    Me enfrenté a este error y cuando me he quitado .html sufijo que erróneamente se añade a la URL de la petición, este error tiene resuelto!

    O al revés: Quitar la .html para deshacerse del error (en realidad depende de la Primavera de configuración de http. (+1 en tu respuesta)

    OriginalEl autor James Jithin

  2. 2

    Intente agregar «jackson» de la dependencia a su pom.xml (o agregar los que considere adecuados jar en caso de que usted no utiliza maven).

    <dependency>
       <groupId>org.codehaus.jackson</groupId>
       <artifactId>jackson-mapper-asl</artifactId>
       <version>1.7.1</version>
    </dependency>

    Sin este lib puede devolver solamente Cadena o similar a la Cadena de los tipos estándar

    Gracias por su respuesta. Tengo este tarro ya. Todavía no está funcionando. Necesito añadir nada a mi applicationcontext.xml?
    No, de ninguna configuración especial en applicationcontext.xml necesitaba
    Trate de eliminar todos los atributos de @RequestMapping a excepción de «valor» y «método»
    Hice lo que usted dijo. Sigue el mismo error 406.
    Por favor, consulte la anterior, además de que me hizo a mi pregunta. Una nueva observación.

    OriginalEl autor yname

  3. 1

    Debe definir los tipos que pueden ser producidos a través de la produce atributo de la @RequestMapping anotación, y no a través de la configuración de encabezados personalizados.

    @RequestMapping(value="/movieTheater", method=RequestMethod.GET, produces={"application/json","application/xml"})
    public @ResponseBody ResponseText getCustomerInput(@RequestParam("name") String name, @RequestParam("price") Double price) {
        //...
    }

    Tenga en cuenta que usted probablemente debería establecer tipos de hormigones en la produces atributo, diciendo: ¿qué tipos de realidad puede ser producido; reclamando a la producción de cualquier cosa no es del todo útil, a menos que usted está sirviendo de seguridad de los archivos y haciendo el trabajo real para determinar los tipos MIME. La serialización JSON y XML son muy comunes las opciones, pero serializar como una secuencia de vídeo es… menos común, diremos?

    Necesita corresponda mensaje de convertidores así.

    Gracias por su respuesta. Pero cuando voy a añadir produce, recibo el siguiente error: El atributo produce no está definido por el tipo de anotación RequestMapping. Alguna idea?
    Por favor, consulte la anterior, además de que me hizo a mi pregunta. Una nueva observación.
    He actualizado la primavera frascos y produce ahora me aceptaron bien. Pero cuando voy a añadir produce, estoy recibiendo el mensaje de error: código de Estado HTTP 404 – /SpringMVCMerchant/movieTheater.htm el recurso solicitado no está disponible.

    OriginalEl autor Donal Fellows

  4. 1

    Tengo el mismo problema, pero he de averiguar :

    (1) retire

    headers={"Accept: application/json, text/javascript"} 

    (2) agregar esta en su pom.xml :

        <!-- add jackson to support restful API, otherwise the API will return 406 error -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

    (3) cambio produce:

    produces={"application/json"}

    (4) retire el contenido de la negociación-manager si usted tiene

    OriginalEl autor Justin

  5. 0

    ¿Tal vez te olvides de implementar Serializable en el ResponseText?

    OriginalEl autor ruben056

Dejar respuesta

Please enter your comment!
Please enter your name here