First, what i wanted to know is what i am doing is the right way to do it.

I have a scenario where i have will receive a json request and i have to update 
the database with that, once the db is updated i have to respond back with the 
json acknowledgment.

What i have done so far is create the class extending application as follows:

             @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;  
             }  
My resource class is extending the ServerResource and i have the following 
method in my resource class

        @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);
                }


My first concern is the object i receive in the entity is inputrepresentation 
so when i fetch the jsonobject from the jsonrepresentation created i always get 
empty/null object.

I have tried passing the json request with the following code as well as the 
client attached

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);
                }
  });
};

Client used to call

            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);

Any help or clues on this is hight appreciated ?

Thanks,
Rahul

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2388558

Reply via email to