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.