Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS C FAQs C TUTORIELS C LIVRES C COMPILATEURS C SOURCES GTK+

Exemple d'utilisation d'un WebService : Google

Date de publication : 17/11/2002

Par LFE (autres articles)
 

Ce document a pour but de présenter l'utilisation d'un WebService sous C++ Builder, en prenant l'exemple de celui fourni par Google

Avant-Propos
1. Qu'est ce qu'un WebService ?
2. Obtenir l'accès au service Google
3. Importer le fichier WSDL
4. Accéder au Service
5. Accéder aux résultats
6. Conclusion


Avant-Propos

Ce document a pour but de présenter d'une manière que j'espère simple l'utilisation d'un WebService. Il ne s'agit pas d'un cours de haute voltige mais d'une implémentation pratique.

Bien entendu, tout remarque constructive est la bienvenue.

Le code a été écrit et testé avec Borland C++ Builder 6.0 Enterprise anglais.

Le projet est téléchargeable ici.

Pour pouvoir l'utiliser, enregistrer la clé recue de Google dans le fichier RegKey.txt


1. Qu'est ce qu'un WebService ?

En faisant l'analogie avec un programme dévellopé par soi-même, le WebService est une fonction, ou une librairie de fonctions mise à disposition non dans une librairie ou un code source, mais par un serveur Web.

Les prototypes de ces fonctions sont définis dans un fichier WSDL, qui peut être comparé à un fichier d'en-tête.

D'un point de vue pratique, il s'agit d'un échange de fichiers XML, transporté par le protocole HTTP. L'application cliente encode dans un fichier XML, la fonction qu'elle désire appeler, ainsi que les paramètres. Ce fichier est envoyé au serveur. Le serveur le décode , éxécute le traitement demandé, encode le résultat dans un fichier XML qui est renvoyé au client.

J'imagine bien que cette description va faire hurler les puristes, mais il me semble qu'elle donne une idée rapide et simple de ce qu'est un WebService.


2. Obtenir l'accès au service Google

Google fournit une API sous forme de WebSerice. Cette API est une version béta mais est fonctionnelle et gratuite, disponible pour une utilisation non-commerciale.

Elle est téléchargeable à l'adresse suivante : http://www.google.fr/apis/

Après enregistrement, une clé est envoyée sur l'e-mail. Cette clé est nécessaire pour chaque appel au service.


3. Importer le fichier WSDL

La première étape est de créer un nouveau projet et d'y importer le fichier WSDL afin de pouvoir accéder aux fonctions exportées par le serveur.

Dans le menu File/New/Other ..., sélectionner l'onglet WebServices, WSDL Importer

Dans l'assitant qui apparaît, cliquer sur le bouton Next

Doit alors apparaître une fenêtre semblable a celle qui suit, avec à gauche la liste des types et fonctions générées et à droite, un aperçu du code.

Cliquer sur le bouton Finish et enregistrer le nouveau projet dans un répertoire.


4. Accéder au Service

Dans le fichier qui va utiliser le WebService, ajouter la ligne suivante dans les includes :

#include "GoogleSearch.h"
			
Il faut ensuite déclarer une interface permettant d'accéder au service désire :

_di_GoogleSearchPort GoogleSearchPort;
			
Et la variable qui contiendra la valeur de retour

GoogleSearchResult *SearchResult = new GoogleSearchResult();
			
L'étape suivante est d'acquérir l'interface vers le service désire.

GoogleSearchPort = GetGoogleSearchPort();
			
L'appel au WebService se fait dès lors comme une fonction tout à fait classique

SearchResult = GoogleSearchPort->doGoogleSearch(RegKey->Text,
                                                EKeyWords->Text,
                                                iStart,
                                                EMaxRes->Text.ToInt(),
                                                CBFilter->Checked,
                                                ERestrict->Text,
                                                CBSafeSearch->Checked,
                                                Elr->Text,
                                                "dummy", 
                                                "dummy");
			
Les paramètres sont dans l'ordre :

  • la clé reçue lors de l'enregistrement auprès de Google
  • Les mots clés
  • l'index du premier élément de réponse desiré
  • Le nombre de résultats désirés
  • un booléen inidquant si 'lon veut tous les résutlats, ou si les résultats similaires sont filtrés
  • une clause de restriction (langue, sujet, ....)
  • une option de filtrage des sites Adultes
  • une option de filtre sur la langue des pages résutlant de la recherche
  • 2 options qui doivent être présentes mais qui ne sont plus utilisées et qui sont appelées à disparaître dans l'avenir
Pour une description plus complète des paramètres et les valeurs permises, je vous renvoie à la documentation fournie dans l'API.


5. Accéder aux résultats

Le code suivant permet de lister les résutlats de la recherche dans une ListBox

ResultElement *resElem;
				
for (int i = SearchResult->startIndex - iStart;i <= SearchResult->endIndex - iStart;i++) {
    resElem = SearchResult->resultElements[i-1];
    LBResult->Items->Add( "<" +IntToStr(iStart + i)+ "> "+ resElem->title);
    LBResult->Items->Add(" -> " + resElem->URL);
}
			

6. Conclusion

A l'exception de l'étape d'importation du descritpif du WebService, l'utilisation est quasi identique à une fonction classique du programme.


Voir également mes autres articles :
Piloter Word sous C++ Builder et Delphi
Piloter Excel sous C++ Builder et Delphi
Utiliser l'API mySQL sous C++ Builder et Delphi
Utiliser un WebService sous C++ Builder et Delphi
Utiliser FMOD sous C++ Builder
Créer et utiliser une DLL sous C++ Builder
Signer des données avec C++ Builder
Comment déployer une application SWT via WebStart
Créer et déployer un premier servlet avec TomCat
Sans oublier :
la FAQ C++ Builder par Geronimo
la FAQ C
la FAQ C++


Valid XHTML 1.1!Valid CSS!

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Responsable bénévole de la rubrique C : Arnaud Feltz (buchs) - Contacter par EMail :
Vos questions techniques : forum d'entraide C - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.