Présentation technique des Webservices dans PMB
page précédentepage suivante

Un exemple

Nous allons réaliser une recherche dans un PMB distant, récupérer les 5 premières notices résultantes et afficher leur titre/auteur principal.

Le script est développé en PHP 5. L'appel se fera via le protocole SOAP, l'extension php-soap sur votre environnement de test doit donc être installée.

Le webservice appelé est disponible sur le site de démonstration de PMB : demo.bibli.fr

Faire une recherche distante dans PMB

L'adresse du webservice SOAP du site de démonstration est : http://demo.bibli.fr/ws/connector_out.php?source_id=2&wsdl

Créez un fichier recherche.php sur un serveur web php5 (ou téléchargez le à l'adresse  : http://doc.sigb.net/ressources/doc_presentation_webservices/exemple1/recherche.php.txt et renommez le fichier en recherche.php)

Saisir le contenu suivant :

Appelez le fichier dans un navigateur : http://monserveur/[chemin_du_fichier]/recherche.php

Le résultat doit ressembler à l'écran ci-dessous.

Recherche de "cuisine" dans PMB : résultat
Recherche de "cuisine" dans PMB : résultat

Il y a dix résultats, les cinq premiers sont affichés

Analyse du code

Le code peut être découpé en 3 parties :

  • Les éléments HTML de la page
  • La recherche dans PMB et la récupération des 5 premières notices
  • L'affichage des résultats

Evidemment, c'est la deuxième partie qui est la plus importante et qui constitue le coeur du script.

Les éléments HTML de la page

Ils sont essentiellement déclarés au début et à la fin du code, avant et après la partie PHP proprement dite.

<html>

<head>

<title>Recherche documentaire</title>

<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>

<style type='text/css'>

table {

border:1px solid #000;

}

td {

border:1px solid #000;

}

</style>

</head>

<body>

...

</body></html>

On reconnaît les éléments indispensables du HTML : <html><head> et <body>. Le jeu de caractère de la page est déclaré en UTF-8. L'élément de style (balise <style> sert juste à mettre  des bordures aux cases du tableau d'affichage des réponses afin d'améliorer la lisibilité.

La recherche et la récupération des résultats

Instanciation du client SOAP

C'est dans cette partie qu'est réalisée l'interaction avec PMB. Au début, on instancie le client SOAP en lui donnant l'adresse du webservice de PMB :

//Connexion au webservice SOAP

$ws=new SoapClient("http://demo.bibli.fr/ws/connector_out.php?source_id=2&wsdl");

Au bout de l'adresse du webservice, on passe un argument : &wsdl. Cela demande au serveur de renvoyer la liste des fonctions disponibles ainsi que leur arguments d'appel au format wsdl : Web Service Description Language, qui est un format XML normalisé. Le wsdl fait partie de SOAP.

Le client SOAP va construire les méthodes correspondantes au wsdl, qui sont dès lors utilisables en PHP.

Appeler la méthode de recherche

Une des méthodes proposées par PMB permet de faire l'équivalent d'une recherche simple : pmbesSearch_simpleSearch. Le nom des méthodes est toujours composé de deux parties séparées par un _ . La première partie pmbesSearch représente un groupe de fonctions thématiques auquel appartient la méthode (ici des fonctions de recherche). La deuxième partie est la méthode proprement dite  : simpleSearch au sein de ce groupe.

$resultat=$ws->pmbesSearch_simpleSearch(0,$mots);

Les arguments passés  :

  1. Le premier représente le type de recherche (tous les champs, titre, auteur, ...). Dans notre cas, 0 signifie recherche sur tous les champs.

  2. Le deuxième donne l'expression recherchée (ici la variable $mots qui vaut "cuisine").

Le résultat des stocké dans la variable $resultat. Il consiste en un objet qui possède deux propriétés  :

  • searchId : qui permet d'identifier par la suite la recherche sur le serveur afin de manipuler les résultats.
  • nbResults : qui donne le nombre de notices trouvées correspondantes à la recherche. Cette dernière propriété est utilisée pour afficher le nombre de résultats :

print "Recherche de ".$mots.", nombre de résultats : ".$resultat->nbResults;

Récupérer les 5 premiers résultats de la recherche

La méthode fetchSearchRecords du groupe pmbesSearch renvoie un tableau de notices issues d'une recherche. C'est une récupération paginée. $notices=$ws->pmbesSearch_fetchSearchRecords($resultat->searchId,0,$nb,"header");

Les arguments passés sont les suivants :

  1. L'identifiant de la recherche dont on veut récupérer le résultat, c.a.d la propriété searchId de la réponse de la recherche : $resultat->searchId

  2. La notice de départ : 0 = la première

  3. Le nombre de notices que l'on veut récupérer  : $nb a été calculé précédemment pour ne pas demander plus de notices que le nombre de résultats trouvés. Dans notre cas, $nb vaut 5

  4. Le format des notices  : header signifie en format texte l'entête titre/auteur de la notice. Différents formats sont possibles  : en UNIMARC, XML, ISBD, Tableau PHP, Ojet JSON, ... Les formats ne sont pas détaillés ici.

D'autres paramètres sont possibles, comme le jeu de caractère souhaité (iso-8859-1 au lieu d'UTF-8), récupérer les exemplaires ou non, les liens entre notices ou non.

Le résultat est un tableau qui contient le détail de chaque notice.

Affichage des résultats

L'entête du tableau de réponse

Les lignes

print "<table>";

print "<tr><td>Identifiant PMB</td><td>Titre</td></tr>";

servent à préparer l'affichage en tableau HTML des notices.

Parcours du tableau des notices renvoyées par PMB

Chaque élément du tableau de réponse est un objet notice qui possède deux propriétés  :

  • noticeId : le numéro unique de la notice dans la base de PMB
  • noticeContent : le contenu de la notice au format demandé

La boucle

foreach ($notices as $notice) {

print "<td>".$notice->noticeId."</td>"."<td>".$notice->noticeContent."</td></tr>";

}

affiche donc pour chaque notice, sont identifiant dans PMB ainsi que son entête titre/auteur.

page précédentepage suivante
A propos...PMB ServicesRéalisé avec Scenari