Restlet la mise en œuvre de post avec json de recevoir et de réponse
Tout d'abord, ce que je voulais savoir est ce que je fais est la bonne façon de le faire.
J'ai un scénario où j'ai recevrez un json demande et j'ai actualiser la base de données qui, une fois la base de données est mise à jour que j'ai à répondre de retour avec le json accusé de réception.
Ce que j'ai fait jusqu'à présent, c'est de créer de la classe de l'extension de l'application 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 ressource est l'extension de la ServerResource et j'ai la méthode suivante dans ma classe de ressource
@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);
}
Mon premier souci est l'objet que j'recevoir dans l'entité est inputrepresentation donc quand j'extrais le jsonobject de la jsonrepresentation créé je reçois toujours vide/objet null.
J'ai essayé de passer le json demande avec le code suivant ainsi que le client joint
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);
De l'aide ou des indices sur ce qui est hight apprécié ?
Grâce,
Rahul
OriginalL'auteur | 2009-08-29
Vous devez vous connecter pour publier un commentaire.
Lorsque j'utilise la suite de JSON comme la demande, il travaille:
Notez les guillemets doubles et complémentaires du côlon qui ne sont pas dans votre échantillon.
OriginalL'auteur laz
En utilisant seulement 1 POT jse-x.y.z/lib/org.restlet.jar, vous pouvez construire JSON par la main du côté client pour des demandes simples:
Sur le côté serveur, en utilisant seulement 2 Pots - gson-x.y.z.jar et jse-x.y.z/lib/org.restlet.jar:
OriginalL'auteur Ashwin Jayaprakash