Saltar al contenido

Cómo enviar y recibir datos JSON desde un servicio web tranquilo usando la API de Jersey

Esta inquietud se puede abordar de variadas formas, pero te compartimos la solución más completa para nosotros.

Solución:

Su uso de @PathParam es incorrecto. No sigue estos requisitos como se documenta en el javadoc aquí. Creo que solo quieres PUBLICAR la entidad JSON. Puede arreglar esto en su método de recursos para aceptar la entidad JSON.

@Path("/hello")
public class Hello 

  @POST
  @Produces(MediaType.APPLICATION_JSON)
  @Consumes(MediaType.APPLICATION_JSON)
  public JSONObject sayPlainTextHello(JSONObject inputJsonObj) throws Exception 

    String input = (String) inputJsonObj.get("input");
    String output = "The input you sent is :" + input;
    JSONObject outputJsonObj = new JSONObject();
    outputJsonObj.put("output", output);

    return outputJsonObj;
  

Y, su código de cliente debería verse así:

  ClientConfig config = new DefaultClientConfig();
  Client client = Client.create(config);
  client.addFilter(new LoggingFilter());
  WebResource service = client.resource(getBaseURI());
  JSONObject inputJsonObj = new JSONObject();
  inputJsonObj.put("input", "Value");
  System.out.println(service.path("rest").path("hello").accept(MediaType.APPLICATION_JSON).post(JSONObject.class, inputJsonObj));

Para mí, el parámetro (JSONObject inputJsonObj) no funcionaba. Estoy usando jersey 2.* Por lo tanto, siento que este es el

Java (Jax-rs) y forma Angular

Espero que sea útil para alguien que usa JAVA Rest y AngularJS como yo.

@POST
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public Map methodName(String data) throws Exception 
    JSONObject recoData = new JSONObject(data);
    //Do whatever with json object

Lado del cliente usé AngularJS

factory.update = function () 
data = user:'Shreedhar Bhat',address:[houseNo:105,city:'Bengaluru'];
        data= JSON.stringify(data);//Convert object to string
        var d = $q.defer();
        $http(
            method: 'POST',
            url: 'REST/webApp/update',
            headers: 'Content-Type': 'text/plain',
            data:data
        )
        .success(function (response) 
            d.resolve(response);
        )
        .error(function (response) 
            d.reject(response);
        );

        return d.promise;
    ;

Si te ha sido provechoso nuestro post, sería de mucha ayuda si lo compartieras con más desarrolladores así nos ayudas a extender esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *