Marvin supports protocol versions 1.0 and 1.1. JSON Schema Service Descriptor can also be used for runtime parameter discovery.
The response MUST be a textual representation of any finite combinations of java.lang.Boolean
, java.lang.Number
, java.lang.String
, java.lang.Object[]
, java.util.Map<java.lang.String, java.lang.Object>
, and null
Calling JSON-RPC Service from API
JsonServiceDescriptor descriptor = new JsonServiceDescriptor(); descriptor.setURL("http://api.geonames.org/"); descriptor.setMethodName("citiesJSON"); descriptor.addArgument(ServiceArgument.createArgument("north", new Double(0))); descriptor.addArgument(ServiceArgument.createArgument("south", new Double(0))); descriptor.addArgument(ServiceArgument.createArgument("east", new Double(0))); descriptor.addArgument(ServiceArgument.createArgument("west", new Double(0))); descriptor.addArgument(ServiceArgument.createArgument("language", "")); descriptor.addArgument(ServiceArgument.createArgument("username", "")); Object result = null; try { result = descriptor.getServiceHandler().callService(descriptor, 44.1, -9.9, 22.4, 55.2, "en", "demo"); } catch (ServiceException e) { System.err.println("Service call failed."); } StringBuilder builder = new StringBuilder(); Object[] array = (Object[]) ((Map<String, Object>)result).get("geonames"); for(Object obj : array) { builder.append("Synchronized call returned: " + ((Map<String, Object>)obj).get("name") + "\n"); } System.out.println(builder.toString()); descriptor.getServiceHandler().callService(descriptor, new AsyncCallback<Map<String, Object>>() { @Override public void onSuccess(Map<String, Object> result) { StringBuilder builder = new StringBuilder(); Object[] array = (Object[]) result.get("geonames"); for(Object obj : array) { builder.append("Asynchronous call returned: " + ((Map<String, Object>)obj).get("name") + "\n"); } System.out.println(builder.toString()); } @Override public void onFailure(ServiceException caught) { System.err.println("Asynchronous call failed."); } }, 44.1, -9.9, 22.4, 55.2, "en", "demo");