Tout objet comme par exemple un moteur de recherche souhaitant communiquer avec un serveur web supportant le protocole Rup 1.0 doit avant tout instancié l'objet java RupHtpCommand pour émettre les commandes. Le rôle de cet objet est d'établir une connexion par le biais d'une socket TCP/IP.La mise en place d'une socket TCP permettant une connexion au serveur web est effectué par la méthode setHttpSocketServer(String url).

Résumons les opérations successives éffectuées lors de l'appel de cette méthode :

  1. Création d'un socket TCP en fonction de l'url passée en paramètre.
  2. Initialisation des flux entrant (inputStream) et sortant(outputStream).
  3. Création de l'objet SendRupRequest sur le flux sortant. C'est cet objet qui effectuera l'envoie des commandes rup conforme au protocole http.
  4. Création de l'objet RecieveRupResponse sur le flux entrant afin de réceptionner les réponses du serveur web provoquée par l'envoi d'une commande à l'aide de SendRupRequest.

Les objets SendRupRequest et RecieveRupResponse sont des objets privés et sont gérés de maniere interne par les différentes méthodes publiques qui commencent par le préfixe rup.

L'initialisation de rupHttpCommand s'effectue comme suit :

//Instanciation de l'objet
rupHttpCommand com=new rupHttpCommand();

//Connection au serveur web
try

     {
       com.setHttpSocketServer(("http://localhost"));
     }
catch(IOException e)
    {
       System.out.println("IOException !!!");
    }

figure 1

Il s'uffit d'appeler une des méthodes de l'objet en fonction de la commande rup que l'on veut effectuer.

Ici on veut s'enregistrer.On crée un objet SOIF correspondant aux préférences que l'on veut transmettre au serveur web. D'apres le protocole rup 1.0 pour s'enregistrer il faut transmettre dans le corps de la requête un objet de type mime SOIF ruppref.

SOIF2 soif = new SOIF2("ruppref");

Maintenant que l'on dipose d'un objet SOIF de type ruppref on lui spécifie son URL (conformément à la rfc 2655 sur les SOIF). Cette URL est utilisée pour indiquer le sous espace web auquel nos préférences se réferent.
try
{
   soif.setURL(new URL("http://localhost"));
}
catch(MalformedURLException x)
{
   System.out.println("creation Soif URL erreur");
}

On peut dorénavant indiquer les paires Attributs/Valeurs (A/V) de l'objet SOIF. Les attributs sont connus et sont spécifiés par le protocole RUP (chaines en violets).

//Ajout des paires A/V
soif.addAVPairs("Transport-Protocol","HTTP www.myrobot:65");

soif.addAVPairs("Action","SendIndex");
soif.addAVPairs("Query-Restriction","Perl 5 regular expression");
soif.addAVPairs("Latency",2-DAYS);
soif.addAVPairs("Seq-Number",0);

A la place de "Perl 5 regular expression", on saisit une expression réguliére conforme à Perl 5.

La commande rupRegister prend en paramétre un vecteur d'objet SOIF car on peut envoyer une suite de préférences pour des sous espaces web différents pour un même serveur Web.

C'est pour cette raison que l'on va ajouter l'objet SOIF que l'on vient de paramétrer dans un vecteur. Cependant, dans cet exemple on n'envoie qu'une préférence pour un seul sous espace Web.

Vector SoifTable = new Vector();
SoifTable.addElement(soif);

Enfin, on envoie la commande.

//"id" est le numéro d'identification renvoyé par le serveur web
String id=com.rupRegister(SoifTable);

L'éxécution de cette commande génere de maniere transparente une requête Http adéquate.

On peut obtenir par exemple :

POST /rup
HTTP/1.1
Connection: Keep-Alive
User_Agent: rupEngine/0.0.1
Host: localhost:4444
accept :application/rup.cmd.register, application/rup.cmd.modify, application/rup.cmd.unregister
Content-type:application/rup.obj.info
Content-length:436

@ruppref { http://localhost Transport-Protocol-1 {20} : HTTP www.myrobot:65 Action {7} : SendIndex Query-Restriction {10} : /w* Version{7} : valeur4 }

Conclusion :
On remarque la souplesse d'utilisation des différents objets de la bibliotheque. L'objet java SOIF2 est suffisement souple pour donner la possibilité de rajouter sans contraintes de nouveaux couples Attributs/Valeur pour rajouter de nouvelles fonctionnalités dans des évolutions futures du protocole Rup.
L'objet rupHttpCommand peut être intégré dans n'importe quelle application désirant communiquer avec un serveur Web via le protocole Rup.