Table of Contents

Cours WebServices

Cours - Documents à télécharger

Cours WebServices

Exemples

Cours REST

WebServices REST

Restful webservices

Introduction REST

Liens webservices

Exercice 1 : Consommer des WebServices en PHP (Conversion de température Celsius -> fahrenheit) / Partie 1

<?php
// The weather
    // Chose your method, with or without user info
    $wsdl = 'http://www.w3schools.com/xml/tempconvert.asmx?WSDL';
 
    // Make the connection
    $client = new SoapClient($wsdl);
 
    // Use this to see what services are available
    //var_dump($client->__getFunctions());
	$listeFonctions = $client->__getFunctions();
 
	//afficher
	foreach($listeFonctions as $k => $v) {
		echo $k."--".$v."\n" ;
	}
 
    // Actually call the service
    $result = $client->CelsiusToFahrenheit(array("Celsius"=>"25"));
    //var_dump($result);
 
	//afficher
	echo "les données\n" ;	
	foreach($result as $k => $v) {
		echo $k."\n" ;
		print_r($v);
	}
?>
stdClass Object
      (
         [MorningLow] => 
         [DaytimeHigh] => 83
       )
 $monOnject->MorningLow ;  
from SOAPpy import WSDL
import zeep
 
client = zeep.Client('http://www.webservicex.net/ConvertSpeed.asmx?WSDL')
result = client.service.ConvertSpeed(
   102, 'kilometersPerhour', 'milesPerhour')
print result

Exercice 2 : Consommer des WebServices en PHP / Java (Partie 2)

public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("test");
 
		try {
			TempConvertSoapProxy temp = new TempConvertSoapProxy();
			System.out.println(temp.fahrenheitToCelsius("123"));
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
public class TestSpeed {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ConvertSpeedsSoapProxy c = new ConvertSpeedsSoapProxy();
 
		SpeedUnit s1 = new SpeedUnit(SpeedUnit._kilometersPerhour);
		SpeedUnit s2 = new SpeedUnit(SpeedUnit._milesPerhour);
		try {
			System.out.println(c.convertSpeed(102, s1, s2));
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Exercice 3 : Consommer des WebServices en PHP/Java

Exercice 4 : Créer son WebService (Quel jour ?) en PHP (client PHP/Java)

<?php
// serv.php
class MyService
{
    public function add($x, $y)
    {
        return $x + $y;
    }
 
	public function multi($x, $y)
    {
        return $x * $y;
    }
}
 
//à adapter en fonction de votre configuration
$options = array(
    'uri' => 'http://localhost/LPRO/2016/serv.php',
    'location' => 'http://localhost/LPRO/2016/serv.php',
);
 
$server = new SOAPServer(null, $options);
$server->setObject(new MyService());
$server->handle();
 
?>
<?php
// cli.php
// à adapter en fonction de votre configuration
$options = array(
    'uri' => 'http://localhost/LPRO/2016/serv.php',
    'location' => 'http://localhost/LPRO/2016/serv.php',
);
$client = new SOAPClient(null, $options);
echo $client->multi(10, 15);
 
?>
<?php
// Pour supprimer le cache du web-service
ini_set('soap.wsdl_cache_enabled', 0);
 
// Nouveau Client SOAP
try {
    // Nouvelle instance de la classe soapClient
   $client = new SoapClient('http://127.0.0.1/lpro/ws1/Hello.wsdl', array('trace' => 1));
 
   $parm = 'LPRO';
    // Appel de la méthode hellotest du service web
 
   try{
    $oReturn =  $client->bonjour("LPRO");
 
	} catch (Exception $e) {
    	echo 'erreur1'.$e;
	} 
	catch (SoapFault $fault) {
		echo "il y a une erreur";
    	trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
	}
        // affiche le résultat
	echo "Resultat : ".$oReturn."<br/>" ;
} catch (SoapFault $fault) {
    echo 'erreur : '.$fault;
}
 
// Affichage des requetes et reponses SOAP (pour debug)
 
	echo '<br />Requete SOAP : '.htmlspecialchars($client->__getLastRequest()).'<br />';
 
	echo '<br />Reponse SOAP : '.htmlspecialchars($client->__getLastResponse()).'<br />';
 
 	echo '<br/>'.var_dump($oReturn);
 
?>
<?php
// Pour supprimer le cache du web-service
ini_set('soap.wsdl_cache_enabled', 0);
// Pour définir le temp maximal d'éxecution de notre web-service
ini_set('default_socket_timeout', 180);
 
// Nom de notre web-service
class Server {
     // Le service QuelJour que l'on a définit dans notre format wsdl
 
	function bonjour($parm) {
    	return "bonjour ".$parm ;
    }
}
 
 
// On tente d'instancier la classe soapServer
// Si cela s'avère impossible, on affiche une erreur
try {
    $server = new SoapServer('Hello.wsdl',  array('trace' => 1,'encoding'	=> 'ISO-8859-1'));
    // On définit la classe qui va gérer les requêtes SOAP (pour nous c'est la class Server)
    $server->setclass('Server');
    $server->setPersistence(SOAP_PERSISTENCE_REQUEST);
} catch (Exception $e) {
    echo 'erreur'.$e;
}
 
 
/*
* Gestion des requêtes
*/
 
// Si l'appel provient d'un Web-Service
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
	try {
		$server -> handle();}
	catch (Exception $e) {
    	echo 'erreur'.$e;
	}
}
// Facultatif seulement pour montrer les fonctions disponibles par le web-service
else {
    echo '<strong>This SOAP server can handle following functions : </strong>';
    echo '<ul>';
    foreach($server -> getFunctions() as $func) {
        echo '<li>' , $func , '</li>';
    }
    echo '</ul>';
}
 
 
?>

Exercice 5 : Manipuler le format JSON (open data Nantes)

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
 
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
{
    "response": {
        "version": "0.9"
        ,"termsofService": "http://www.actualitix.com"
        ,"features": {
        "date": "24/09/2013"
        }
    },
    "cotation_bourse": [
        {
        "bourse": {
        "heure": "15",
        "minute": "04"
        },
        "total": {
        "compagnie": "Total", 
        "cotation": "43,15", 
        "tendance": "+ 1,04"},    
        "michelin": {
        "compagnie": "Michelin", 
        "cotation": "82,42", 
        "tendance": "+ 1,20"}
        },
        {
        "bourse": {
        "heure": "09",
        "minute": "04"
        },
        "yahoo": {
        "compagnie": "Yahoo",
        "cotation": "30,26", 
        "tendance": "- 1,06"},
        "google": {
        "compagnie": "Google",
        "cotation": "886,50", 
        "tendance": "- 3,89"}
        }
        ]
}
<?php
//$json = file_get_contents("cotation_bourse.json");
$json = file_get_contents("http://data.nantes.fr/api/getDisponibiliteParkingsPublics/1.0/39W9VSNCSASEOGV/?output=json");
 
$p_json = json_decode($json);
$test = $p_json->{'opendata'}->{'request'};
//var_dump($p_json->{'opendata'}->{'answer'}->{'data'}->{'Groupes_Parking'}->{'Groupe_Parking'});
foreach($p_json->{'opendata'}->{'answer'}->{'data'}->{'Groupes_Parking'}->{'Groupe_Parking'} as $k=>$v) {
	foreach($v as $k2=>$v2) {
		echo $k2."=>".$v2."<br/>" ;
	} 
	echo "-------------------------</br>" ;
}
 
//var_dump(json_decode($json, true));
//print_r($parsed_json->{'opendata'});
 
//echo prettyPrint(prettyPrint($json));
//echo json_encode($json, JSON_PRETTY_PRINT);
 
?>

Manipuler le format XML (parsing simple)

  $data = file_get_contents("http://?????.???");
  $dom = new DomDocument();
  //$dom->load('fichier.xml');
  $dom->loadXML($data);
  $racine = $dom->documentElement;
  echo $racine->nodeName;
  $title=$dom->getElementsByTagName('title');
  foreach($title as $v) {
  	echo $v->firstChild->nodeValue."<br/>";
  }

Exercice 6

Mots clés

Liens

http://fr.wikipedia.org/wiki/Service_Web

http://fr.wikipedia.org/wiki/REST

http://fr.wikipedia.org/wiki/SOAP

http://fr.wikipedia.org/wiki/Architecture_orient%C3%A9e_services

http://fr.wikipedia.org/wiki/Web_Services_Description_Language

http://fr.wikipedia.org/wiki/JavaScript_Object_Notation

http://fr.wikipedia.org/wiki/Universal_Description_Discovery_and_Integration

http://fr.wikipedia.org/wiki/Asynchronous_JavaScript_And_XML

http://gomashup.com/cms/

http://www.zippopotam.us/

http://www.flickr.com/services/feeds/

http://blog.visual.ly/data-sources/

http://eusebius.developpez.com/php5dom/

$values=simplexml_load_file("http://.....");

Consommer des webservices

utilisez les API XML et JSON de php pour afficher le résultat

Yahoo

http://developer.yahoo.com/weather/

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20music.artist.search%20where%20keyword%3D%27Coldplay%27&diagnostics=true

Google

https://www.googleapis.com/customsearch/v1?key=AIzaSyC_gM_6SV2kauoP4NyNx_4YVC370bpIzRk&cx=017576662512468239146:omuauf_lfve&q=tennis&callback=handleResponse&prettyprint=true

https://www.googleapis.com/customsearch/v1?key=AIzaSyC_gM_6SV2kauoP4NyNx_4YVC370bpIzRk&cx=017576662512468239146:omuauf_lfve&q=tennis&alt=json

<?php
$json = file_get_contents("VOTRE URL REST", true); //getting the file content
$decode = json_decode($json, true); //getting the file content as array
 
echo "<pre>";
print_r($decode);
echo "</pre>";
 
foreach($decode["items"] as $k=>$v) {
	echo utf8_decode($v["displayLink"])."<br/>" ;
}
 
?>

Création de webservice