Bonjour,

Je travaille sur la création d'un webservice SOAP en PHP.
Pour générer le WSDL, j'ai utilisé l'outil wsdl editor fournis avec eclipse.

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
62
63
64
65
66
67
68
69
70
71
72
73
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:tns="http://www.example.org/NewWSDLFile/"
 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 name="NewWSDLFile"
 targetNamespace="http://www.example.org/NewWSDLFile/">
 
	<wsdl:types>
		<xsd:schema targetNamespace="http://www.example.org/NewWSDLFile/">
			<xsd:complexType name="CompteRenduDemande">
			<xsd:sequence>
				<xsd:element name="demande" type="tns:Demande"></xsd:element>
				<xsd:element name="dateAcquittement" type="xsd:dateTime"></xsd:element>
				<xsd:element name="priorite" type="xsd:int"></xsd:element>
				<xsd:element name="statut" type="xsd:boolean"></xsd:element>
				<xsd:element name="signature" type="xsd:string"></xsd:element>
				<xsd:element name="codeErreur" type="tns:Erreur"></xsd:element>
			</xsd:sequence>
			</xsd:complexType>
 
			<xsd:complexType name="Demande">
			<xsd:sequence>
				<xsd:element name="source" type="xsd:string"></xsd:element>
				<xsd:element name="numeroDemande" type="xsd:string"></xsd:element>
			</xsd:sequence>
			</xsd:complexType>
 
			<xsd:complexType name="Erreur">
			<xsd:sequence>
				<xsd:element name="codeErreur" type="xsd:string"></xsd:element>
				<xsd:element name="libelleErreur" type="xsd:string"></xsd:element>
				<xsd:element name="estPermanente" type="xsd:string"></xsd:element>
			</xsd:sequence>
			</xsd:complexType>
		</xsd:schema>
	</wsdl:types>
 
	<wsdl:message name="CompteRenduOperationRequest">
  	<wsdl:part name="input" type="tns:CompteRenduDemande"/>
	</wsdl:message>
 
	<wsdl:message name="CompteRenduOperationResponse">
  	<wsdl:part name="output" type="xsd:string"/>
	</wsdl:message>
 
	<wsdl:portType name="RetourDroitsADSL">
  	<wsdl:operation name="CompteRenduOperation">
    	<wsdl:input message="tns:CompteRenduOperationRequest" name="in"/>
    	<wsdl:output message="tns:CompteRenduOperationResponse" name="out"/>
  	</wsdl:operation>
	</wsdl:portType>
 
	<wsdl:binding name="RetourDroitsADSLBinding" type="tns:RetourDroitsADSL">
  	<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
  	<wsdl:operation name="CompteRenduOperation">
    	<soap:operation soapAction="http://www.example.org/NewWSDLFile/CompteRenduOperation"/>
    	<wsdl:input name="in">
      	<soap:body use="literal"/>
    	</wsdl:input>
    	<wsdl:output name="out">
      	<soap:body use="literal"/>
    	</wsdl:output>
  	</wsdl:operation>
	</wsdl:binding>
 
	<wsdl:service name="RetourDroitsADSL">
  	<wsdl:port binding="tns:RetourDroitsADSLBinding" name="RetourDroitsADSL">
    	<soap:address location="http://localhost/experiment/CANAL/soap-RetourDroitsADSL/server/server.php"/>
  	</wsdl:port>
	</wsdl:service>
</wsdl:definitions>

Je l'ai testé (PHP et SoapUI), ça fonctionne bien, le seul problème c'est que je ne sais pas forcément pourquoi.

Par exemple, il y a pas mal d'attributs dont j'ignore le rôle :
xmlns:tns, targetNamespace, xsd:schema (qui utilisent des urls bidon avec example.org).

Pareil pour les bindings, les portType et les messages.

Est-ce que quelqu'un pourrait m'éclairer sur tout ça, pour le moment j'ai l'impression d'être en face d'une grosse usine à gaz soviétique... j'ai l'impression de faire du Java, pas du PHP !

Merci