Bonjour,
J'ai un service web qui tourne en .NET
Je dois développer un client en PHP5. J'ai un problème de formattage de mon en-tête SOAP. En effet, il semblerait que le préfixe du namespace n'est pas appliqué à toutes les balises :
Voilà le message SOAP que PHP envoie :
Le préfixe "ns1" en rouge est bien placé sur la balise <AuthHeaderUidSite> mais n'apparaît pas sur <UID> et <Site>, du coup, côté server, ma méthode web .NET n'arrive pas à les récupérer. Pour elle, c'est comme si il n'y avait pas de donnée dans <AuthHeaderUidSite>.
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 <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://www.toto.com/"> <env:Header> <ns1:AuthHeaderUidSite> <UID>xxx</UID> <Site>102</Site> </ns1:AuthHeaderUidSite> </env:Header> <env:Body> <ns1:HelloWorld> <ns1:nom>LI</ns1:nom> <ns1:day>2008-01-17T14:46:37</ns1:day> </ns1:HelloWorld> </env:Body> </env:Envelope>
Voici le code PHP que j'utilise :
Comment faire pour que le namespace s'applique aux membres de ma classe AuthHeaderGuidSite ?
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 class AuthHeaderGuidSite { private $UID; private $Site; public function __construct($uid,$site) { $this->UID=$uid; $this->Site=$site; } } $ns = "http://www.toto.com/"; $client = new SOAPClient($wsdl,$options); $GUID = "xxx"; $site = 102; $Auth1 = new AuthHeaderUidSite($GUID,$site); $headerBody = new SOAPVar($Auth1,SOAP_ENC_OBJECT); $header = new SoapHeader($ns,'AuthHeaderUidSite',$headerBody,false); $day = date('Y-m-d\TH:i:s'); $params = array("nom"=>"LI", "day"=>$day); $s = $client ->__soapCall("HelloWorld",array($params),NULL,array($header));
Merci
Partager