[PHP / .Net] Créer un WebService en PHP et l’utiliser en DotNet

webservice php dotnet

Aujourd’hui j’ai voulu créer un webservice en php afin de pouvoir l’utiliser dans une application en Vb.Net.

Après plusieurs recherches j’ai trouvé comment faire.

Créer un WebService en PHP

Pour créer mon WebService en PHP, j’ai tout simplement utilisé la librairie NuSoap.

NuSoap va nous permettre de créer rapidement et facilement un WebService qui contiendra plusieurs méthodes qui seront par la suite utilisable directement en .Net via Visual Studio.

Si vous souhaitez plus de détails concernant NuSoap, n’hésitez pas à vous rendre sur leur site.

Voici le sample de code que j’utilise:

<?php
//Adresse à utiliser dans Visual Studio http://127.0.0.1/ws/index.php?wsdl
 
/**********************************
*           INCLUDES              *
**********************************/
require_once('nusoap/nusoap.php');
 
/**********************************
*            NUSOAP               *
**********************************/
$namespace = "127.0.0.1/ws/";
$server = new soap_server(); 						//creation du serveur SOAP
$server->configureWSDL("SimpleService"); 			//Configuration du WSDL
$server->wsdl->schemaTargetNamespace = $namespace;	//Configuration du namespace
 
/**********************************
*    NUSOAP FONCTION SIMPLE       *
**********************************/
//On définit la fonction simple
function FonctionSimple($who) {
	return "Hello $who";
}
 
//On enregistre la méthode simple sur le serveur SOAP
$server->register(
	// method name:
	'FonctionSimple', 		 
	// parameter list:
	array('name'=>'xsd:string'), 
	// return value(s):
	array('return'=>'xsd:string'),
	// namespace:
	$namespace,
	// soapaction: (use default)
	false,
	// style: rpc or document
	'rpc',
	// use: encoded or literal
	'encoded',
	// description: documentation for the method
	'A simple Hello World web method');
 
/**********************************
*    NUSOAP FONCTION COMPLEXE     *
**********************************/
//on definit le schema d'une méthode complexe				
$server->wsdl->addComplexType(
    'ObjetComplexe',
    'complexType',
    'struct',
    'all',
    '',
    array(
        'Nom' => array('name'=>'Nom','type'=>'xsd:string'),
        'Prenom' => array('name'=>'Prenom','type'=>'xsd:string'),
        'Age' => array('name'=>'Age','type'=>'xsd:int')
    )
);
$server->wsdl->addComplexType(
    'ObjetComplexeArray',
    'complexType',
    'array',
    '',
    'SOAP-ENC:Array',
    array(),
    array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ObjetComplexe[]')),
    'tns:ObjetComplexe'
);
 
/* FONCTION COMPLEXE 1 */
//On définit la fonction complexe (modifie le nom du troisieme element du tableau passé en argument)
function FonctionComplexe($mySoapObjects) {
	$mso = $mySoapObjects[3];
	$mso['Nom'] = "Robert";
	return $mso;
}
 
//on enregistre la méthode complexe sur le serveur SOAP
$server->register(
    'FonctionComplexe',
    array('soapObjects'=>'tns:ObjetComplexeArray'),
    array('return'=>'tns:ObjetComplexe'),
    $namespace,
    false,
    'rpc',
    false,
    'Traite un array d object et retourne un seul object');
 
/* FONCTION COMPLEXE 2 */
//On définit la fonction complexe (retourne le tableau passé en argument)
function FonctionComplexeBis($mySoapObjects) {
	return $mySoapObjects;
}	
$server->register(
    'FonctionComplexeBis',
    array('soapObjects'=>'tns:ObjetComplexeArray'),
    array('return'=>'tns:ObjetComplexeArray'),
    $namespace,
    false,
    'rpc',
    false,
    'Retourne le tableau passé en argument');
 
// Get our posted data if the service is being consumed
// otherwise leave this data blank.                
$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) 
                ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
 
// pass our posted data (or nothing) to the soap service                    
$server->service($POST_DATA);                
exit();
 
?>

Vous pouvez également télécharger tout le sample ici: WebService Php NuSoap. Celui-ci intègre la bibliothèque NuSoap.

Utiliser le WebService PHP en DotNet

Voici les différentes étapes nécessaires pour pouvoir utiliser votre WebService PHP.

  • Tout d’abord il faut ajouter une “Service Référence” à votre projet:

php web service and dotnet 1

  • Puis cliquez sur le bouton “Advanced…”

php web service and dotnet 2

  • Puis cliquez sur “Add Web Reference”

 

php web service and dotnet 3

  • Maintenant vous pouvez spécifier l’adresse de disponibilité de votre Web Service php. N’oubliez pas d’ajouter le paramètre “?wsdl” afin de récupérer les définitions de vos méthodes

php web service and dotnet 4

  • Et voilà c’est fini. Si tout s’est bien déroulé vous devriez voir votre Web Service dans Web References de votre projet.

php web service and dotnet 5

Il ne vous reste plus qu’ utiliser votre Web Service dans votre projet:

Sub Main()
 
        'on se connecte au WebService
        Dim service As New MonService.SimpleService
 
        'on exécute la méthode simple du WebService
        Dim res As String = service.FonctionSimple("jhd")
        Console.WriteLine(res)
 
        'on exécute la méthode complexe 1 du WebService
        Dim ms(10) As MonService.ObjetComplexe
        For i As Integer = 0 To ms.Length - 1
            ms(i) = New MonService.ObjetComplexe
            With ms(i)
                .Nom = "jhd" & i
                .Prenom = "ZeM" & i
                .Age = 30 + i
            End With
        Next
        Dim ret1 As MonService.ObjetComplexe = service.FonctionComplexe(ms)
 
        'on exécute la méthode complexe 2 du WebService
        Dim ret2() As MonService.ObjetComplexe = service.FonctionComplexeBis(ms)
 
    End Sub

Si vous souhaitez vous pouvez télécharger mon projet DotNet.

Leave a Reply

Your email address will not be published. Required fields are marked *