Tout d'abord, ce que je voulais savoir, c'est que je faisais la bonne chose.Poste d'implémentation de Restlet avec réception et réponse JSON
J'ai un scénario où je recevrai une requête json et je dois mettre à jour la base de données avec cela, une fois que la base de données est mise à jour, je dois répondre avec l'accusé de réception json.
Ce que je l'ai fait est à ce jour créer l'application d'extension de classe comme suit:
@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;
}
Ma classe de ressources est l'extension de la ServerResource et j'ai la méthode suivante dans ma classe de ressources
@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);
}
Ma première préoccupation est que l'objet que je reçois dans l'entité est inputrepresentation donc quand je récupère le jsonobject de la jsonrepresentation créée, je reçois toujours un objet vide/nul.
J'ai essayé passer la demande JSON avec le code suivant, ainsi que le client attaché
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 utilisé pour appeler
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);
Toute aide ou des indices sur ce point est apprécié Hight?
Merci, Rahul
Tenir compte de poser cette question sur le forum Restlet-discuss officiel: http: // restl et.tigris.org/ds/viewForumSummary.do?dsForumId=4447 –