1 Chapitre1



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. 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]

✓ 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.

✓ 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 (), 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.).

✓ 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.

✓ 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.

✓ 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.

✓ 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 :

|Technique |Création |Consommation |Exemples |PHP |ASP |Externes |

|Nusoap |x |x |WS php |x | | |

|Pear/Soap | |x |WS php, WS Asp .net |x |x |x |

|Rest | |x |Yahoo, Google | | |x |

|JavaScript | |x |GoogleMaps, GoogleSearch, Michelin | | |x |

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 SoapServer("http://…/fichier.wsdl") |Création du serveur. On passe en argument l'url de son fichier |

| |descripteur, son WSDL. |

|$s->addFunction("nomFonction") |Ajout d'une fonction. |

|function nomFonction($paramètres) { } |La fonction. |

|$s->handle() |Lancement du serveur. |

Client

|Instruction |Description |

|$c = new SoapClient("http://…/fichier.wsdl") |Création du client. On passe en argument l'url du descripteur du 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

✓ 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.

✓ Créer le fichier descripteur du Web Service (fichier WSDL) décrivant le service et ses méthodes.

✓ 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éthode du service du serveur.

✓ Tester en requêtant vers le script client.

• Ecran

[pic]

• Scripts

Trois scripts : le serveur, le fichier descriptif wsdl et le client.

✓ Le serveur : wsServeur1.php

✓ Le client : wsClient1.php

Il est possible de passer par une classe pour la création des méthodes du serveur :

✓ Le fichier WSDL : wsService1.wsdl

Retourne une salutation

Structure d'un document WSDL

Un document WSDL est un fichier au format XML incluant les éléments suivants :

Definitions : définit le service.

Types : définissant les types de données utilisés par le service web.

Message : comprenant une ou plusieurs parties représentant les paramètres d'entrée et de sortie.

PortType : définissant le service web, en particulier les opérations qu'il réalise et le type de messages échangés.

Binding : précisant le protocole utilisé et le format de message.

Service : définissant le nom du service et l'url (port) du service (Le script serveur).

• Exercice

Testez wsServeur1bis et faites saisir les valeurs via un formulaire dans un document HTML.

3 Deuxième exemple : une ville en fonction du cp

• Objectif

Récupérer le nom d'une ville de la table villes en fonction du cp.

La ressource est une table SQL.

• Démarche

Créer le serveur,

Créer le fichier descripteur du Web Service (fichier WSDL),

Créer le client.

• L'écran d'interrogation et d'affichage du résultat.

[pic]

• Scripts

✓ Le serveur : wsServeur3.php

Retourne une ville

4 Interroger un service web développé en ASP .net

• Objectif

Utiliser un WS écrit en ASP .net 2008.

Il affichera "bonjour prénom".

Le wsdl est généré automatiquement par Visual Studio (cf support ASP .NET – Les Web Services).

La différence est qu'il faut utiliser la propriété methodeResult outre la méthode avec son passage de paramètre.

Notez qu'à la différence d'un appel vers PHP :

echo $clientSOAP->méthode(argument1, argument2, …);

vers ASP .net ce sera :

echo $clientSOAP->méthode($tableauAssociatif)->méthodeResult;

• Script client

• Le fichier WSDL

Service_un.wsdl

3 Exemple d'utilisation d'un service web public gratuit

Objectif : connaître la météo du jour dans une ville.

Le site qui fournit le service est le suivant

Le site n'existe plus depuis fin 2009.

Les méthodes utilisées sont getCodeOfCity() et getWeather().

Pour récupérer le code ville, ici FRXX0076 pour Paris en France, il faut utiliser la méthode getCodeOfCity() qui va renvoyer en fonction d'un nom de ville (Paris) une liste de villes. On va boucler sur cette liste pour obtenir le code de Paris, France.

Il s'alimente lui-même à l'Api de Yahoo pour les codes des villes et chez pour la météo.

[pic]

Tapez ceci dans la barre d'url du navigateur pour avoir la description des services.



Eventuellement utilisez les instructions suivantes dans votre code PHP pour prévisualiser les tableaux générés.

echo "";

print_r($tMeteo);

echo "";

4 NuSOAP

1 Prémisses

Avec NuSoap (incompatible avec Soap de PHP5) vous n'avez pas à écrire le WSDL. NuSoap "l'écrit" pour vous.

Du fait de l'incompatibilité NuSoap avec Soap de PHP5 il faut commenter dans le php.ini l'entrée suivante :

;extension=php_soap.dll

NuSoap est téléchargeable à :

Autres sites :



… pour le débogage.

2 Syntaxes de base

Serveur

|Instruction |Description |

|require_once("nusoap/lib/nusoap.php") |Inclusion |

| | |

|$s = new soap_server() |Instanciation du serveur |

|$s->register("nomDeLaFonction") |Ajout d'une méthode |

|function nomDeLaFonction($paramètres) { … } |La méthode … |

|$s->service($HTTP_RAW_POST_DATA) |Exécute le service |

Client

|Instruction |Description |

|require_once("nusoap/lib/nusoap.php") |Inclusion |

| | |

|$c = new soapclient("URL du serveur") |Instanciation du client (URL PHP) |

|$parametres = array() |Paramètres dans un tableau associatif |

|$c->call("méthode", $parametres) |Appel de la méthode |

Impossible d'accéder à un WS écrit en .NET avec NUSOAP!!!

3 Un premier exemple simple (Appel PHP)

• Objectif

Afficher une salutation!

• Démarche

Créer un service web (Sans WSDL).

Consommer un service web (En appelant directement le code PHP).

• Script serveur

-

-

World66's guide to Paris

A stay in Paris should at least include a visit to the Louvre, one of the best ... In the neighborhood of Paris you can visit, Fontainebleau, Versailles with its ...





pdf.paris.pdf

1218438000

application/pdf

-

**http%3A//74.6.239.67/search/cache%3Fei=UTF-8%26appid=YahooDemo%26query=paris%26format=pdf%26u=pdf.paris.pdf%26d=cVaktBlMS9G4%26icp=1%26.intl=us

460328

1 L'API Maps de Yahoo

• Objectif

Yahoo met à disposition des développeurs une API pour récupérer des plans.

Et les 2 dernières lignes de code proviennent de chez Yahoo.

[pic]

• Syntaxes

Cf pour les paramètres de la requête.

Quelques paramètres :

AppId, street, city, state, zip, location, latitude, longitude, image_width, image_height, image_type (png ou gif), zoom (1 à 12), raduis, output (xml ou php, renvoie un objet sérailisé PHP).

Attention l'url de requête est ?…

Le code PHP

Pays:

Ville:

CP :

Rue :

La réponse XML :



Le code pour une réponse XML (remplace les 2 dernières lignes).

$dom = new DOMDocument('1.0', 'UTF-8');

$dom->preserveWhiteSpace = false;

if($dom->loadXML(utf8_encode($reponse)) === false) die('Erreur de parsing');

$img = $dom->getElementsByTagName("Result")->item(0)->textContent;

echo "";

2 L'API Météo de Yahoo

Yahoo met à disposition des développeurs une API pour récupérer des informations météo.

C'est une API RSS.

Documentation :

• Objectif

[pic]

• Remarques

L'url est la suivante :

$url = "$codePays$codeVille&u=c";

Il n'y a que 2 paramètres : p(US zip code or Location ID) et u(Units: f ou c).

Il faut connaître le code de la ville (zip pour US, mais ID location pour les autres pays). Or pour Paris c'est "FRXX0076". Impossible de l'obtenir via une api.

Le résultat est en anglais.

Nous préférerons celle de google.

• Script

yahooServiceMeteo.php

Ville :

Pays :

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download