En primer lugar, lo que quería saber es lo que estoy haciendo es la forma correcta de hacerlo.Restlet implementando la publicación con json recibe y responde
Tengo un escenario en el que tengo que recibir una solicitud json y tengo que actualizar la base de datos con eso, una vez que se actualice la base de datos tengo que responder de nuevo con el reconocimiento json.
lo que he hecho hasta ahora es crear la aplicación que se extiende la clase de la siguiente manera:
@Override
public Restlet createRoot() {
// Create a router Restlet that routes each call to a
// new instance of ScanRequestResource.
Router router = new Router(getContext());
// Defines only one route
router.attach("/request", RequestResource.class);
return router;
}
Mi clase de recurso está ampliando el ServerResource y tengo el siguiente método en mi clase de recurso
@Post("json")
public Representation post() throws ResourceException {
try {
Representation entity = getRequestEntity();
JsonRepresentation represent = new JsonRepresentation(entity);
JSONObject jsonobject = represent.toJsonObject();
JSONObject json = jsonobject.getJSONObject("request");
getResponse().setStatus(Status.SUCCESS_ACCEPTED);
StringBuffer sb = new StringBuffer();
ScanRequestAck ack = new ScanRequestAck();
ack.statusURL = "http://localhost:8080/status/2713";
Representation rep = new JsonRepresentation(ack.asJSON());
return rep;
} catch (Exception e) {
getResponse().setStatus(Status.SERVER_ERROR_INTERNAL);
}
Mi primera preocupación es que el objeto que recibo en la entidad es inputrepresentation, así que cuando obtengo el jsonobject de la jsonrepresentation created siempre obtengo un objeto vacío/nulo.
que han intentado pasar la solicitud JSON con el siguiente código, así como el cliente conectado
function submitjson(){
alert("Alert 1");
$.ajax({
type: "POST",
url: "http://localhost:8080/thoughtclicksWeb/request",
contentType: "application/json; charset=utf-8",
data: "{request{id:1, request-url:http://thoughtclicks.com/status}}",
dataType: "json",
success: function(msg){
//alert("testing alert");
alert(msg);
}
});
};
de cliente utilizado para llamar a
ClientResource requestResource = new ClientResource("http://localhost:8080/thoughtclicksWeb/request");
Representation rep = new JsonRepresentation(new JSONObject(jsonstring));
rep.setMediaType(MediaType.APPLICATION_JSON);
Representation reply = requestResource.post(rep);
Cualquier ayuda o pistas sobre esto se agradece altura?
Gracias, Rahul
considerar pedir a esta pregunta en la página oficial Restlet-discutir foro: http: // restl et.tigris.org/ds/viewForumSummary.do?dsForumId=4447 –