Bonjour à tous,
Je ne connais rien aux webservices et à XML et je galère depuis plusieurs jours pour essayer d'envoyer des données à un web service. La connection se fait sans problème, mais quelque soit la technique que j'utilise le serveur me renvoi toujours un message du type
Invalid number of payload elements: 21 in ....
Je pense que je n'ai pas le bon nombre de champs
Voici le WDSL
et voici un exemple de code qui me créé l'erreur (dans ce morceau là je construit un tableau "contact" qui est passé en parametre dans le tableau " evenement" suivant.
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 - <definitions name="ManifestationService" targetNamespace="XXX:portail-manifestations:service" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="region-paca:portail-manifestations:model" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="XXX:portail-manifestations:service" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - <types> + <xs:schema targetNamespace="XXX:portail-manifestations:service" version="1.0" xmlns:ns1="XXX:portail-manifestations:model" xmlns:tns="XXX:portail-manifestations:service" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:import namespace="XXX:portail-manifestations:model" /> <xs:element name="importer" type="tns:importer" /> <xs:element name="importerResponse" type="tns:importerResponse" /> - <xs:complexType name="importer"> - <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="evenement" type="ns1:evenement" /> </xs:sequence> </xs:complexType> - <xs:complexType name="importerResponse"> - <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="resultat" type="ns1:resultat" /> </xs:sequence> </xs:complexType> </xs:schema> - <xs:schema targetNamespace="region-paca:portail-manifestations:model" version="1.0" xmlns:tns="region-paca:portail-manifestations:model" xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <xs:complexType name="evenement"> + <xs:sequence> <xs:element minOccurs="0" name="dateModification" type="xs:dateTime" /> <xs:element minOccurs="0" name="indicateurSupprime" type="xs:boolean" /> <xs:element minOccurs="0" name="titre" type="xs:string" /> <xs:element minOccurs="0" name="dateDebut" type="xs:dateTime" /> <xs:element minOccurs="0" name="dateFin" type="xs:dateTime" /> <xs:element maxOccurs="unbounded" minOccurs="0" name="codeInsee" type="xs:string" /> <xs:element minOccurs="0" name="adressePostale" type="xs:string" /> <xs:element minOccurs="0" name="adresseWeb" type="xs:string" /> <xs:element minOccurs="0" name="typeEvenement" type="tns:typeEvenement" /> <xs:element minOccurs="0" name="contact" type="tns:contact" /> <xs:element minOccurs="0" name="descriptif" type="xs:string" /> <xs:element minOccurs="0" name="adresseImage" type="xs:string" /> <xs:element minOccurs="0" name="copyrightPhoto" type="xs:string" /> <xs:element minOccurs="0" name="adresseOffice" type="xs:string" /> <xs:element maxOccurs="unbounded" minOccurs="0" name="adressesReservation" type="xs:string" /> <xs:element minOccurs="0" name="indicateurImportant" type="xs:boolean" /> </xs:sequence> <xs:attribute name="identifiant" type="xs:ID" use="required" /> </xs:complexType> + <xs:complexType name="contact"> - <xs:sequence> <xs:element name="nom" type="xs:string" /> <xs:element minOccurs="0" name="prenom" type="xs:string" /> <xs:element minOccurs="0" name="telephone" type="xs:string" /> <xs:element minOccurs="0" name="adresseMail" type="xs:string" /> <xs:element minOccurs="0" name="adresseWeb" type="xs:string" /> </xs:sequence> </xs:complexType> + <xs:complexType name="resultat"> + <xs:sequence> <xs:element name="succes" type="xs:boolean" /> <xs:element minOccurs="0" name="message" type="xs:string" /> </xs:sequence> <xs:attribute name="identifiant" type="xs:ID" use="required" /> </xs:complexType> + <xs:simpleType name="typeEvenement"> - <xs:restriction base="xs:string"> <xs:enumeration value="Aucun" /> <xs:enumeration value="Danse" /> <xs:enumeration value="Musique" /> <xs:enumeration value="TheatreEtSpectacle" /> <xs:enumeration value="CultureEtArt" /> <xs:enumeration value="ManifestationSportive" /> <xs:enumeration value="ManifestationCommerciale" /> <xs:enumeration value="TraditionEtFolklore" /> <xs:enumeration value="NatureEtDetente" /> <xs:enumeration value="ArtTerroirEtGastronomie" /> <xs:enumeration value="PatrimoineEtHistoire" /> <xs:enumeration value="Stages" /> </xs:restriction> </xs:simpleType> </xs:schema> </types> + <message name="Manifestation_importerResponse"> <part element="tns:importerResponse" name="importerResponse" /> </message> + <message name="Manifestation_importer"> <part element="tns:importer" name="importer" /> </message> + <portType name="Manifestation"> - <operation name="importer" parameterOrder="importer"> <input message="tns:Manifestation_importer" /> <output message="tns:Manifestation_importerResponse" /> </operation> </portType> + <binding name="ManifestationBinding" type="tns:Manifestation"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> - <operation name="importer"> <soap:operation soapAction="" /> - <input> <soap:body use="literal" /> </input> - <output> <soap:body use="literal" /> </output> </operation> </binding> + <service name="ManifestationService"> - <port binding="tns:ManifestationBinding" name="ManifestationPort"> <soap:address location="http://127.0.0.1:8080/XXX-WebServices/ManifestationService" /> </port> </service> </definitions>
Je crois avoir à peu près tout essayer. Il y a certainement quelque chose qui m'échappe.
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 $contact = array( 'nom'=>$contact, 'prenom'=>'', 'telephone'=>$telephone, 'adresseMail'=>$courriel, 'adresseWeb'=>$web, ); $evenement= array( 'dateModification'=>$date_modif, 'indicateurSupprime'=>$supprime, 'titre'=>$titre, 'dateDebut'=>$date_debut, 'dateFin'=>$date_fin, 'codeInsee'=>$commune, 'adressePostale'=>$Lieu, 'adresseWeb' =>$web, 'typeEvenement'=>'NatureEtDetente', 'contact'=>$contact, 'descriptif'=>$description_evenement, 'adresseImage'=>$image, 'copyrightPhoto'=>'', 'adresseOffice'=>'', 'adressesReservation'=>'', 'indicateurImportant'=>'', 'identifiant'=>$id, 'nom'=>$contact, 'prenom'=>'', 'telephone'=>$telephone, 'adresseMail'=>$courriel, 'adresseWeb'=>$web, ); $options = array('trace' => 1); try { $client->__soapCall('importer',$evenement, $options, $header ); } catch (SoapFault $soapFault) { echo "Erreur : ".$soapFault; }
Partager