Bonjour,
Voilà plusieurs jours que j'essaie de consommer un webservice que je créé en PHP depuis Visual Studio.
J'ai créé la partie serveur, le serveur PHP et le fichier WSDL (généré via l'application gratuite DIA et UML2PHP5).
1) Je créé mon schéma UML (une classe avec une fonction : Horloge, HeureExacte())
2) J'exporte mon fichier .wsdl
3) Je créé la partie serveur PHP
Le fichier wsdl généré :
Le serveur SOAP PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 <?xml version="1.0" encoding="UTF-8"?><!-- This file has been generated by UML2PHP5 UML2PHP5 is free and released under GPL Copyright KDO kdo@zpmag.com UML2PHP5 : uml2php5.zpmag.com --><definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:webservice" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="WebServices" targetNamespace="urn:webservice"> <message name="HelloWorldRequest"/> <portType name="HorlogePortType"> <operation name="HelloWorld"> <input message="tns:HelloWorldRequest"/> </operation> </portType> <binding name="HorlogeBinding" type="tns:HorlogePortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="HelloWorld"> <soap:operation soapAction="urn:HorlogeAction"/> <input> <soap:body use="encoded" namespace="urn:xmethods" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> </operation> </binding> <service name="Webservice"> <port name="HorlogePort" binding="tns:HorlogeBinding"> <soap:address location="http://URL/soap_server.php?action=Horloge"/> </port> </service> </definitions>
4) Je créé le client soap php pour tester mon webservice mais rien ne s'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 <?php /** * Code generated by dia-uml2php5 plugin * written by KDO kdo@zpmag.com */ // première étape : désactiver le cache wsdl lors de la phase de test ini_set("soap.wsdl_cache_enabled", "0"); function HelloWorld() { return ("Hello World !"); } $wsdl = 'Webservices.wsdl'; //Création du serveur SOAP avec le fichier WSDL $server = new SoapServer($wsdl); //Ajout de la classe Math dans les éléments proposés par le WebService $server->addFunction("HelloWorld"); //l'utilisation du WebService se fera toujours par la méthode POST if ($_SERVER["REQUEST_METHOD"] == "POST") { $server->handle(); } else //dans le cas contraire, la page affichera les méthodes proposées par le WebService { echo '<h4>Ce serveur SOAP peut gérer les fonctions suivantes : </h4><ul>'; $functions = $server->getFunctions(); foreach($functions as $func) { echo '<li>'.$func.'</li>'; } echo '</ul>'; } $server->setPersistence(SOAP_PERSISTENCE_SESSION); $server->handle(); ?>
Je précise que tous les fichiers sont dans le même répertoire sur le serveur;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ $wsdl = "http://url/Webservices.wsdl"; $client = new SoapClient($wsdl); echo $client->HelloWorld();
Une fois que j'aurai réussi à appeler mon service en PHP, quel fichier dois-je appeler dans Visual Studio lorsque je veux ajouter mon service web, soap_server.php ou bien Webservices.wsdl ?
Je ne comprends pas le lien entre le wsdl et le serveur soap php. Ils s'appellent mutuellement et j'aimerais retrouver mes classes en C# pour les utiliser ensuite.
Merci par avance pour votre aide.
KibitO
Partager