Po pierwsze, chciałem wiedzieć, co robię, to właściwa droga.Restlet implement post z jsonem odbiór i odpowiedź
Mam scenariusz, w którym otrzymam żądanie json i muszę zaktualizować bazę danych, po aktualizacji bazy danych muszę odpowiedzieć za pomocą potwierdzenia json.
co zrobiłem do tej pory, to stworzyć aplikację rozciągający klasy następująco:
@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;
}
Moja klasa zasób jest rozszerzenie ServerResource i mam następujące metody w mojej klasie zasobów
@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);
}
Moim pierwszym zmartwieniem jest to, że obiekt, który otrzymuję w jednostce, to inputReklaracja, więc kiedy pobieram jsonobject z jsonrepresentation created, zawsze otrzymuję obiekt pusty/zerowy.
Próbowałem przekazując żądania json z następującego kodu, jak i klienta dołączony
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);
}
});
};
klienta w celu wywołania
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);
pomocy lub wskazówek na ten temat jest wysokość docenione?
Dzięki, Rahul
Rozważmy tym pytaniem na oficjalnym forum Restlet-dyskutować: http: // restl et.tigris.org/ds/viewForumSummary.do?dsForumId=4447 –