C'est un des intérêts majeurs des web services, par le biais de l'interface, des clients Perl discutent avec un service écrit en C#, ou un client DotNet interroge un service Java, bref tout est permis.
Ok mais quelle différence avec RPC (remote procedure call) ??? la réponse est bien sur...XML. Enfin les services parlent une langue commune. Il y a également des services périphériques, d'annuaire par exemple, qui permettent d'identifier les web services pour savoir comment les interroger ensuite, mais je m'égare.


Pour nous le client sera celui écrit en Java...bien sur.
Rien d'autre que le sdk Java de Sun ne sera nécessaire, normalement présent sur la machine, avec un peu de chance...
Il faut télécharger le kit fourni par google : le kit
Ensuite on dézippe tout ça dans le répertoir XXX. On ouvre une fenêtre de commande, on va dans XXX, et la on vérifie la présence de l'archive jar : com.google.soap.search.GoogleAPIDemo


Voila on est chaud chaud chaud, le résultat est proche. Habituellement, il faut une clé développeur pour interroger le web service, fournie gratuitement par google, mais limitée à 1000 appels par jour. Bref n'abusez pas de ma clé, j'en ai parfois besoin. Si vous voulez la vôtre , c'est ici.

Donc avec ma clé, pour voir le résultat tout de suite now, il suffit de taper dans votre fenêtre de commande la ligne suivante (vous êtes bien dans le répertoire contenant l'archive citée ci-dessus hein?) :

java Classe_de_demo_fournie cle_google search "mes mots clés de recherche" 

Ce qui donne par exemple :

java -classpath googleapi.jar com.google.soap.search.GoogleAPIDemo  
xraBigFQFHJWJdNWUeUC68rw58769i+4 search "le monde"

On obtient alors les résultats de la recherche sur la clé "le monde"...

Si proxy il y a, il est possible de rajouter les options suivantes, interprétées par la machine virtuelle Java (la logique de gestion du proxy est bien au niveau de Java et non dans le programme fourni par google) : (Plus d'infos sur l'utilisation des proxys avec Java)

java -cp googleapi.jar -Dhttp.proxyHost=myproxywww -Dhttp.proxyPort=portXXX 
com.google.soap.search.GoogleAPIDemo xraBigFQFHJWJdNWUeUC68rw58769i+4 search "le monde"

A noter la syntaxe sympathique qui permet de s'affranchir de l'écriture d'un fichier Manifest : on spécifie dans la ligne de commande le classpath, en l'occurence le .jar, et la classe contenant le main...Marre des Manifest ;-(

Bon, ne pas se priver non plus de jouer un peu avec l'option "spell" :

java -cp googleapi.jar -Dhttp.proxyHost=myproxywww -Dhttp.proxyPort=portXXX 
com.google.soap.search.GoogleAPIDemo xraBigFQFHJWJdNWUeUC68rw58769i+4 spell "frakois mitteran"

Résultat :

  • Args = frakois miteran
  • Spelling suggestion: francois mitterand

Trop fort !

Enfin, on peut remplacer par une troisième option qui renvoie une page en cache : java com.google.soap.search.GoogleAPIDemo key cached /


Ca y est pour le premier web service. Plus qu'à dépiauter un peu le code de la classe com.google.soap.search.GoogleAPIDemo qui est d'une simplicité extrême.
Donc pas vraiment d'infos de ce coté là, la mécanique "web services" est cachée dans des classes qui viennent compilées dans l'archive.
Bon on a quand même fait tourner un premier code. Et ce code est réutilisable très aisément, je n'ai pas dit qu'il fallait le détourner hein...On pourrait par exemple par des interrogations récurrentes programmées en savoir un peu plus sur les google dances (mises à jour des datacenter de google) ou sur le nombre de pages indexées...On peut scruter un peu le référencement d'un site sur certains mots-clés, bref, beaucoup de portes ouvertes avec ce petit bout de code !

les méthodes sur l'objet GoogleSearchResult retourné par google sont entre autres :

  • getDocumentFiltering()
  • getEndIndex()
  • getEstimatedTotalResultsCount()
  • getSearchTime()

Cheers !

And read more. On wikipedia.