VII. Les Clients HTTP▲
Robusta définit une interface RestClient avec des fonctionnalités simplifiées, mais suffisantes et bien organisées pour une architecture REST. Comme les implémentations SunRestClient et ApacheRestClient sont des wrappers pour les HttpClient Sun et Apache, il est possible d'accéder également à l'ensemble de leurs fonctionnalités.
Notons que la version 1.0 de Robusta implémentera un GwtRestClient avec une interface similaire, mais asynchrone.
VII-A. L'interface RestClient▲
//Utiliser une fois suffit
public
void
setApplicationUri
(
String uri); //ApplicationUri est également défini par le constructeur
public
void
setAuthorizationValue
(
String authorizationValue);
public
void
setContentType
(
String contentType);
//Optionnel
public
void
setPostBodyToNextRequest
(
String postBody, boolean
contentTypeIsXml);
//Pour chaque requête
public
String executeGETmethod
(
String relativeFileWithNoParam, CoupleList<
String, Object>
parameters) throws
HttpException, RestException;
public
String executePOSTmethod
(
String relativeFileWithNoParam, CoupleList<
String, Object>
parameters) throws
HttpException, RestException;
public
String executePUTmethod
(
String relativeFileWithNoParam, CoupleList<
String, Object>
parameters) throws
HttpException, RestException;
public
String executeDELETEmethod
(
String relativeFileWithNoParam, CoupleList<
String, Object>
parameters) throws
HttpException, RestException;
public
int
getLastStatusCode
(
) ;
VII-B. Implémentation Apache ou Sun ?▲
Le client d'Apache est présumé plus stable et plus efficace que la version Sun. Cependant le HttpClient d'Apache nécessite l'installation dans le ClassPath des trois bibliothèques d'Apache. Apache est proscrit pour les applets. D'une part le temps de chargement est assez long, mais surtout les bibliothèques annexes tentent un chargement sur le disque local, ce qui est interdit.
Par souci de simplicité, il me semble donc préférable de se tourner vers le SunRestClient qui est immédiatement utilisable.
VII-C. Exemples▲
Voici un accès GET exécuté par le SunRestClient, utilisant deux paramètres de requête :
RestClientSun client =
new
RestClientSun
(
"http://www.mi5.co.uk/);
String result =
client.executeGETmethod
(
"/people"
, CoupleList.builder
(
"firstname"
, "James"
,"city"
,"London"
) );
//result contient la réponse
Voici un exemple avec la méthode POST.
String xml =
"<root><user>Shark</user><ennemy>true</ennemy></root>"
;
RestClientSun client =
new
RestClientSun
(
"http://www.mi5.co.uk/);
client.setPostBodyToNextRequest
(
xml, true
);
String result =
client.executePOSTmethod
(
"/people"
, null
);