1 Chapitre1 - Exercices corriges

Les types MIME comme text/xml, text/html, image/jpeg, application/pdf, ... Les
requêtes SOAP-XML sont encapsulées dans des requêtes HTTP. ...... longitude,
image_width, image_height, image_type (png ou gif), zoom (1 à 12), raduis,
output ...

Part of the document










PHP
et
WEB SERVICES











TABLE DES MATIERES



Chapitre 1 PHP et WEB SERVICES 3
1.1 Présentation générale 4
1.2 Web Services et PHP avec SOAP 7
1.2.1 Syntaxes de base et démarche 7
1.2.2 Premier exemple : Salutations 8
1.2.3 Deuxième exemple : une ville en fonction du cp 13
1.2.4 Interroger un service web développé en ASP .net 16
1.3 Exemple d'utilisation d'un service web public gratuit 18
1.4 NuSOAP 20
1.4.1 Prémisses 20
1.4.2 Syntaxes de base 20
1.4.3 Un premier exemple simple (Appel PHP) 21
1.4.4 Deuxième exemple (Appel WSDL) 23
1.4.5 Un service web relié à une BD : une ville en fonction du cp ou
l'inverse 26
1.4.6 Application : le package voyages avec NU-SOAP 28
1.5 Les APIs publiques 31
1.6 L'API ws.geonames.org 32
1.7 REST et APIs YAHOO 37
1.7.1 L'API Maps de Yahoo 38
1.7.2 L'API Météo de Yahoo 40
1.7.3 L'API de recherche d'images de Yahoo 42
1.7.4 L'API de recherche de Yahoo. 44
1.8 APIs GOOGLE 46
1.8.1 L'API google map de géolocalisation 46
1.8.2 L'api google weather en PHP 52
1.8.3 L'API google maps avec une classe PHP de New Digital Group 53
1.8.4 L'API Google maps en JavaScipt 55
1.8.5 Google maps JS interactif. 57
1.8.6 L'API Google de recherche (AJAX) 59
1.9 PEAR et SOAP 64
1.9.1 Présentation 64
1.9.2 Le client 65
1.9.3 Créer un client utilisant un proxy (le wsdl) pour un service ASP
66
1.9.4 Le serveur 67
1.9.5 Quelques APIs PEAR préparées 68
1.10 APIs YouTube 72
1.10.1 API Youtube 72
1.11 L'API Michelin (JavaScript) 73
1.11.1 Présentation 73
1.11.2 Premier exemple statique 74
1.11.3 Deuxième exemple dynamique 76









PHP et WEB SERVICES






1 Présentation générale


Ce chapitre se propose d'examiner la création et la consommation de
Services Web en PHP.
Le schéma général est le suivant lorsque l'on est en mode SOAP via un
fichier WSDL :

[pic]

V Services Web

Les services web (web services) facilitent les échanges entre les
applications de l'entreprise et permettent une ouverture vers d'autres
entreprises. Les premiers fournisseurs de services web sont les
fournisseurs de services en ligne (météo, bourse, planification
d'itinéraire, pages jaunes, etc.).

Les services web représentent un mécanisme de communication entre
applications distantes au travers du réseau internet indépendant de tout
langage de programmation et de toute plate-forme d'exécution utilisant le
protocole HTTP comme moyen de transport.

Un serveur propose des services écrits sous forme de fonction. En tant que
client vous n'avez pas réécrire la roue et à stocker des milliers de
données dans votre BD.

Les appels de services distants se font comme les appels de pages Web.
Une requête sur une URL renvoie une page; une demande de service renvoie
une réponse.
L'avantage de passer par HTTP est de ne pas nécessiter l'ouverture de ports
spécifiques sur les firewalls.

Les communications :

o s'effectuent sur un support universel et généralement non filtré par
les pare-feux;
o emploient une syntaxe XML pour décrire les appels de fonctions
distantes et les données échangées;
o organisent les mécanismes d'appel et de réponse.

V Standards

Les standards de base utilisés par les services web (UDDI, WSDL, SOAP ou
XML-RPC ou REST) sont normalisés par le W3C (http://www.w3.org/2002/ws/),
tandis que l'OASIS (Organization for the Advancement of Structured
Information Standards) est chargée de la standardisation des couches
supérieures, plus proches du niveau applicatif (sécurité, etc.).


V Couches

Le fonctionnement des services web repose sur un modèle en couches, dont
les trois couches fondamentales sont les suivantes :

Description : définition des interfaces (paramètres des fonctions, types de
données) des services web.
Découverte : recherche et localisation de services web particuliers dans un
annuaire de services décrivant le nom de la société, l'objectif de chaque
service, etc.
Invocation : description de la structure des messages échangés par les
applications.

V Description

Le protocole standard le plus utilisé est WSDL (Web Service Description
Language).

WSDL repose sur XML et décrit les services web : emplacement du service web
et opérations (méthodes, paramètres et valeurs de retour) que le serveur
propose.

V Découverte

Le protocole standard le plus utilisé pour la découverte de services est
UDDI (Universal Description Discovery and Integration).
Ce standard défini par l'OASIS décrit un standard de publication et
d'interrogation des services web proposés par un réseau, généralement au
sein d'un service d'annuaire recensant les services web de l'organisation.

V Invocation

Il existe plusieurs standards de services web basés sur XML :

XML-RPC (XML Remote Procedure Call) , le plus ancien, fonctionnant sur un
principe procédural et sans gestion des états.

SOAP (Simple Object Access Protocol), fonctionnant selon le modèle objet.

Dans les 2 cas l'appel de méthode distante est réalisé par le client qui
transmet la demande au fournisseur de service formattée en XML; le serveur
décode la requête, exécute les traitements, puis répond; le client décode
la réponse afin qu'elle puisse être utilisée par l'application cliente.

REST (Representational State Transfer),

Définition de Roy T. Fielding : "Representational State Transfer évoque
l'image du fonctionnement d'une application Web bien construite : un réseau
de pages Web (une machine à états finis virtuelle) où l'utilisateur
progresse dans l'application en cliquant sur des liens (transition entre
états) ce qui provoque l'affichage de la page suivante (représentant le
nouvel état de l'application) à l'utilisateur qui peut alors l'exploiter".
REST n'est pas un standard, mais il utilise des standards suivants :
URI comme syntaxe universelle pour adresser les ressources,
HTTP un protocole sans état (stateless) avec un nombre très limité
d'opérations,
Des liens hypermedia dans des documents (X)HTML et XML pour représenter à
la fois le contenu des informations et la transition entre états de
l'application,
Les types MIME comme text/xml, text/html, image/jpeg, application/pdf,
video/mpeg pour la représentation des ressources.

Les WebServices de Yahoo (cf plus loin) sont tous en REST ... ou presque.


Dans ce chapitre nous allons voir la création et la consommation de
services Web avec :

|Techniq|Créati|Consommatio|Exemples |PHP |ASP |Externe|
|ue |on |n | | | |s |
|Nusoap |x |x |WS php |x | | |
|Pear/So| |x |WS php, WS Asp .net |x |x |x |
|ap | | | | | | |
|Rest | |x |Yahoo, Google | | |x |
|JavaScr| |x |GoogleMaps, | | |x |
|ipt | | |GoogleSearch, Michelin | | | |



2 Web Services et PHP avec SOAP


SOAP (ancien acronyme de Simple Object Access Protocol) est un protocole de
type RPC (Remote Procedure Call) orienté objet bâti sur XML.
Les requêtes SOAP-XML sont encapsulées dans des requêtes HTTP. Idem pour
les réponses.
La description du service est réalisée au moyen d'un fichier WSDL (Web
Services Description Language).


1 Syntaxes de base et démarche


Dans le php.ini l'entrée extension=php_soap.dll doit être décommentée.
Ce sera aussi le cas pour PEAR mais le contraire pour NuSoap.



Serveur

|Instruction |Description |
|$s = new |Création du serveur. On passe en |
|SoapServer("http://.../fichier.w|argument l'url de son fichier |
|sdl") |descripteur, son WSDL. |
|$s->addFunction("nomFonction") |Ajout d'une fonction. |
|function |La fonction. |
|nomFonction($paramètres) { } | |
|$s->handle() |Lancement du serveur. |



Client

|Instruction |Description |
|$c = new |Création du client. On passe en |
|SoapClient("http://.../fichier.w|argument l'url du descripteur du |
|sdl") |serveur et des services. |
|$c->nomFonction([paramètres]) |Sollicitation du service. Chaque |
| |paramètre est passé sous forme de |
| |chaînes de caractères. |


. Démarche

Création du serveur en PHP,
Création du WSDL à la main,
Création du client en PHP.



2 Premier exemple : Salutations


. Objectif

Introduire au WS avec Soap. Le WS renverra une phrase de salutation au
client qui se sera nommé.

. Démarche

V Créer le serveur : instancier un objet SoapServer en passant en
argument l'url de son fichier descripteur du service (le fichier wsdl)
et créer une ou plusieurs méthodes.
V Créer le fichier descripteur du Web Service (fichier WSDL) décrivant
le service et ses méthodes.
V Créer le client : instancier un objet SoapClient en passant en
argument l'url du fichier descripteur du service (le fichier wsdl) et
appeler la m