25 02 | 2013

Exemple de Web Service SOAP en PHP

Rédigé par TAVERNIER

Classé dans : PHP sur IBM i

Comment mettre en place un serveur ou un client Web Service de type SOAP en PHP

SOAP (ancien acronyme de Simple Object Access Protocol) est un protocole de RPC orienté objet bâti sur XML.
 
Il permet la transmission de messages entre objets distants, ce qui veut dire qu'il autorise un objet à invoquer des méthodes d'objets physiquement situés sur un autre serveur. Le transfert se fait le plus souvent à l'aide du protocole HTTP, mais peut également se faire par un autre protocole, comme SMTP.
Le protocole SOAP est composé de deux parties :
  • une enveloppe, contenant des informations sur le message lui-même afin de permettre son acheminement et son traitement,
  • un modèle de données, définissant le format du message, c'est-à-dire les informations à transmettre.
SOAP a été initialement défini par Microsoft et IBM, mais est devenu une référence depuis une recommandation du W3C, utilisée notamment dans le cadre d'architectures de type SOA(Service OrientedArchitecture) pour les Services Web.
 
La blbliothèque NuSOAP permet de générer facilement des Web Services clients et serveurs, et de générer automatiquement le fichier de description du Web Service (WSDL).
 
Exemple de Serveur:
 

<?php

require_once('nusoap/lib/nusoap.php');

$serv= new nusoap_server();

$serv->configureWSDL("Hello", "urn:Hello/", "http://10.1.1.1:89/WS/serveur.php");

$serv->wsdl->schemaTargetNamespace="http://soapinterop.org/xsd/";

$serv->register("bonjour",
  array("nom"=>"xsd:string", "prenom"=>"xsd:string"),
  array("codret"=>"xsd:string"),
  'urn:Hello',
  'urn:Hello/bonjour',
  '',
  '',
  'WebService pour dire bonjour...');

$serv->service(isset($HTTP_RAW_POST_DATA)?$HTTP_RAW_POST_DATA:'');

function bonjour($nom, $prenom)

{
   return 'Bonjour '.$prenom.' '.$nom;

}

?>

Exemple de client:

<html>

<head>

<title>Mon client WebService</title>

</head>

<body>

<?php

if(isset($_POST['btn_sub']))

{
  require_once('nusoap/lib/nusoap.php');
  $client = new nusoap_client("http://10.1.1.1:89/ws/WSServer.php?wsdl", true);
  $err= $client->getError();
  if($err) die('erreur de connexion au service: '.$err);
  echo $client->call("bonjour", array("nom"=>$_POST["nom"], "prenom"=>$_POST["prenom"]));
  $err= $client->getError();
  if($err) die('erreur d\'execution du service: '.$err);

}

else echo'
<form method="post" action="WSClient.php">
<label for="nom">Nom: </label>
<input type="text" name="nom"><br>
<label for="prenom">Prénom: </label>
<input type="text" name="prenom"><br>
<input type="submit" name="btn_sub" value="Envoyer">
</form>';

?>

</body>

</html>

 

Vous avez des questions ? Des remarques ? N'hésitez pas à nous contacter en cliquant ici : Notos, votre expert PHP sur IBMi

Les commentaires sont fermés.

Qui sommes-nous ?

  • Notos, expert IBMi (AS/400) et spécialiste de l’informatisation des PME/PMI est le partenaire privilégié des entreprises qui veulent moderniser leur Informatique.
  • En savoir plus

Archives

Derniers commentaires