Bonjour,

Voila j'ai créer une web service avec php qui me fournit une methode getServerDate(). Ce web service est disponible localement à l'adresse http://127.0.0.1/ServiceWebPHP/webservice.php.

Ma question est :

Comment utiliser la méthode de ce service web?


J'avais vu sur un des tutos de ce site qu'il fallait mettre l'url du site ou est héberger le web service à l'envers. Mais la je suis sur le localhost, donc j'imagine que c'est pas la même chose. En tout cas j'ai essayé avec le localhost ca ne marche pas.

Voila le code 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
28
29
30
31
32
33
34
35
36
37
38
 
<?php
 
// La classe qui va gérer les requètes SOAP
class myWebService {
 
    // Méthode renvoyant une date standardisée
    function getServerDate() {
        return array('date' => date('Y-m-d\TH:i:s O'));
    }
}
 
// On tente d'instancier la classe soapServer
// Si cela s'avère impossible, on lève une exception
try {
    $server = new SoapServer('webservice.wsdl',  array('trace' => 1, 'soap_version' => SOAP_1_1));
    // On définit la classe qui va gérer les requètes SOAP
    $server -> setclass('myWebService');
} catch (Exception $e) {
    echo $e;
}
 
 
// La méthode POST a été utilisée pour appeller cette page.
// On suppose donc qu'une requète a été envoyée, on la gère
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $server -> handle();
} 
// sinon, on affiche une liste des méthodes que peut gérer ce serveur
else {
    echo '<strong>This SOAP server can handle following functions : </strong>';    
    echo '<ul>';
    foreach($server -> getFunctions() as $func) {        
        echo '<li>' , $func , '</li>';
    }
    echo '</ul>';
}
?>
et le fichier wsdl

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
<?xml version="1.0"?>
 
<definitions name="CSP"
    targetNamespace="urn:CSP"
    xmlns:tns="urn:CSP"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:typens="urn:CSP"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns="http://schemas.xmlsoap.org/wsdl/">
 
<types>
    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:CSP">       
        <xsd:complexType name="MyResults">
            <xsd:all>
                <xsd:element name="date" type="xsd:string"/>
            </xsd:all>
        </xsd:complexType>
    </xsd:schema>
</types>
 
<message name="getServerDate">
    <part name="none" type="xsd:int"/>
</message>
 
<message name="getServerDateResponse">
    <part name="value" type="typens:MyResults"/>
</message>
 
<portType name="CspPorts">
    <operation name="getServerDate">
        <input  message="getServerDate"/>
        <output message="getServerDateResponse"/>
    </operation>
</portType>
 
<binding name="MyBinding"  type="typens:CspPorts">
    <soap:binding style="rpc" 
        transport="http://schemas.xmlsoap.org/soap/http" />
      <operation name="getServerDate">
          <soap:operation
             soapAction="http://localhost/WebServicePHP/webservice.wsdl"/>
        <input>
            <soap:body use="literal"/>
        </input>
        <output>
            <soap:body use="literal"/>
        </output>
    </operation>
</binding>
 
<service name="MyWebService">
    <documentation>Mon Service web</documentation>
        <port name="CspPorts" binding="typens:MyBinding">
      <soap:address location="http://localhost/WebServicePHP/webservice.php"/>
    </port>
  </service>
 
</definitions>
Voila merci d'avance à ceux qui pourront m'aider!