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>
|