Source
de TwiceClient.java
import java.net.URL; import com.flat502.rox.client.XmlRpcClient; public class TwiceClient { public static void main(String[] args) { try { Integer valeur = null; String url = "http://localhost:8080/"; if (args.length == 2) { url = "http://"+args[0]; valeur = new Integer(args[1]); } else if (args.length == 1) valeur = new Integer(args[0]); else { System.out.println("usage : TwiceClient [host:port] entier"); System.exit(1); } System.out.println("Connection a " + url); XmlRpcClient client = new XmlRpcClient(new URL(url)); Object[] data = new Object[] { valeur }; Object reponse = client.execute("service.twice", data); Integer resultat = (Integer)reponse; System.out.println("twice() = "+reponse.toString()); } catch (Exception e) { System.out.println("erreur :"+e.getMessage()); e.printStackTrace(); } } } |
Source de TwiceServer.java
import java.net.InetAddress; import java.util.Iterator; import java.util.List; import com.flat502.rox.marshal.RpcCall; import com.flat502.rox.marshal.RpcResponse; import com.flat502.rox.marshal.xmlrpc.XmlRpcMethodResponse; import com.flat502.rox.server.SyncRequestHandler; import com.flat502.rox.server.XmlRpcServer; public class TwiceServer implements SyncRequestHandler { public RpcResponse handleRequest(RpcCall call) throws Exception { Object[] parametres = call.getParameters(); System.out.println("fonction : "+call.getName() +" appelee avec "+parametres.length+" donnees :"); for (int i = 0; i < parametres.length; i++) System.out.println("--> "+parametres[i]); if (call.getName().equals("service.twice")) { int valeur = ((Integer)parametres[0]).intValue(); Integer resultat = new Integer(2*valeur); return new XmlRpcMethodResponse(resultat); } else throw new NoSuchMethodException(); } // usage : TwiceServer [port] public static void main(String[] args) { try { int port = 8080; if (args.length > 0) port = Integer.parseInt(args[0]); XmlRpcServer server = new XmlRpcServer(port); server.registerHandler(null, "^service\\.", new TwiceServer()); server.start(); } catch (Exception e) { e.printStackTrace(); } } } |
EXECUTION
|
|
POST / HTTP/1.1 Date: lun., 22 janv. 2007 15:51:21 +0100 Content-Type: text/xml Host: 193.49.185.41:2000 User-Agent: RoX/0.9 Linux 2.6.17-10-generic (i386) Content-Length: 161 <?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>service.twice</methodName> <params><param><value><int>56</int></value></param></params> </methodCall> HTTP/1.1 200 OK Date: lun., 22 janv. 2007 15:52:11 +0100 Host: didier.mathinfo.u-picardie.fr Server: RoX/0.9 Linux 2.6.8-2-686 (i386) Content-Type: text/xml Content-Length: 132 <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params><param><value><int>112</int></value></param></params> </methodResponse> |
tag | type XML | exemple | type Java |
<i4> ou <int> | 4 bytes entier signé | 3 | int ou java.lang.Integer ou java.lang.Long |
<boolean> | 0 faux ou 1 vrai | 0 ou 1 | boolean ou java.lang.Double |
<string> | chaine ou caractère |
String ou char ou java.lang.Character ou char[ ] ou java.lang.Character[ ] |
|
<double> | flottant signé double précision | double ou float ou java.lang.Double ou java.lang.Float | |
<dateTime.iso8601> | date et horaire | 19980717T14:08:55 | java.util.Date |
<base64> | binaire code base64 | IGNhbid0IHJlYWQg | byte [ ] |
|
|
Source de SommeClient.java
import java.net.URL; import com.flat502.rox.client.XmlRpcClient; public class SommeClient { public static void main(String[] args) { try { int[] TabValeurs = null; String url = null; if (args.length > 2) { url = "http://"+args[0]; TabValeurs = new int[args.length-1]; for (int i=args.length-1; i>0; --i) TabValeurs[i-1] = Integer.parseInt(args[i]); } else { System.out.println("usage : SommeClient host:port entier entier ...."); System.exit(1); } System.out.println("Connection a " + url); XmlRpcClient client = new XmlRpcClient(new URL(url)); Object[] data = new Object[] { TabValeurs }; Object reponse = client.execute("service.somme", data); Integer resultat = (Integer)reponse; System.out.println("somme() = "+reponse.toString()); } catch (Exception e) { System.out.println("erreur :"+e.getMessage()); e.printStackTrace(); } } } |
import java.net.InetAddress; import java.util.Iterator; import java.util.List; import com.flat502.rox.marshal.RpcCall; import com.flat502.rox.marshal.RpcResponse; import com.flat502.rox.marshal.xmlrpc.XmlRpcMethodResponse; import com.flat502.rox.server.SyncRequestHandler; import com.flat502.rox.server.XmlRpcServer; public class SommeServer implements SyncRequestHandler { public RpcResponse handleRequest(RpcCall call) throws Exception { Object[] parametres = call.getParameters(); System.out.println("fonction : "+call.getName()+" appelee avec " +parametres.length+" donnees :"); for (int i = 0; i < parametres.length; i++) System.out.println("--> "+parametres[i]); if (call.getName().equals("service.somme")) { Integer som = new Integer(sommer((List)call.getParameters()[0])); return new XmlRpcMethodResponse(som); } else throw new NoSuchMethodException(); } private int sommer(List list) { int total = 0; Iterator i = list.iterator(); while (i.hasNext()) total += ((Integer) i.next()).intValue(); return total; } // usage : SommeServer [port] public static void main(String[] args) { try { int port = 8080; if (args.length > 0) port = Integer.parseInt(args[0]); XmlRpcServer server = new XmlRpcServer(port); server.registerHandler(null, "^service\\.", new SommeServer()); server.start(); } catch (Exception e) { e.printStackTrace(); } } } |
|
|
POST / HTTP/1.1 Date: mar., 23 janv. 2007 12:43:26 +0100 Content-Type: text/xml Host: linux93:2000 User-Agent: RoX/0.9 Linux 2.6.17-10-generic (i386) Content-Length: 261 <?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>service.somme</methodName> <params> <param> <value> <array> <data> <value><int>34</int></value> <value><int>89</int></value> <value><int>555</int></value> </data> </array> </value> </param> </params> </methodCall> HTTP/1.1 200 OK Date: mar., 23 janv. 2007 12:43:26 +0100 Host: linux93 Server: RoX/0.9 Linux 2.6.17-10-generic (i386) Content-Type: text/xml Content-Length: 132 <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params><param><value><int>678</int></value></param></params> </methodResponse> |