2011-04-30 6 views
6

Estoy usando Apache-CXF para crear servicios web REST y tratar de enviar un formulario.Cómo enviar datos JSON como cuerpo de solicitud en Apache CXF jax-rs (REST) ​​

Servidor:
Este es mi método, que se espera que obtenga datos json.

@POST 
@Path("/addCustomer/") 
@Consumes(MediaType.APPLICATION_JSON) 

//{"Customer":{"name":"Some Name","id":6}} 

public Customer addCustomer(Customer customer){ 

    logger.debug(customer); 
    return customer; 

} 

Cliente: estoy usando Firefox RESTO plug-in para la presentación de la solicitud: Usando cliente REST, he publicado siguiente JSON como petición del cuerpo:

{"Customer":{"name":"Arnav Awasthi","id":6}} 

Pero me estoy "415: Unsupported Media Type".

+0

es necesario tener un nombre de raíz en la solicitud cuerpo, tengo que tener el mismo servicio que la suya, pero, no me llevo Raíz nombre en mi pedido json string. – vashishth

Respuesta

2

Tienes que encontrar la forma de decirle a firefox que configure el tipo de contenido en application/json. El error indica que está enviando algo más.

3

use restclient, un complemento para fire fox y agregue los encabezados http como Aceptar: application/json, content-type: application/json.

2

Disculpe la respuesta tardía, pero puede servirle a los demás.

Debe hacer una doble comprobación de que su clase Cliente está anotada con @XmlRootElement de JAXB, ya que jackson lo necesita para deserializar el mensaje JSON.

1

Tuve el mismo error hace algún tiempo. Parece que el motivo principal fue la excepción "No se ha encontrado ningún lector de cuerpo de mensaje para la clase de solicitud".

De acuerdo con http://www.javatips.net/blog/2012/02/cxf-restful-tutorial Agregué la biblioteca jettison para resolver este problema.

+0

Jettison agregado, no resolvió el problema –

0

hay que añadir cabeceras personalizadas para informar al cliente qué tipo de datos que va a enviar de vuelta por ejemplo: Nombre de encabezado: Content-type Header-Valor: application/json

1

me enfrenté al mismo problema utilizando CXF 2.7.4 con Jasckon 2.XX. Pero fue corregido cuando actualicé a CXF 2.7.7. O use Jackson 1.9.X con CXF 2.7.4.

0

Tuve el mismo problema. La solución fue eliminar el nombre de la clase de bean de la cadena json. En su caso, el JSON que debe ser enviado como el cuerpo sería,

{"name":"Arnav Awasthi","id":6} 
Cuestiones relacionadas