Bonjour,
Je dois développez un appli php pour se connecter à un webservice (serveur AXIS).
On m'a fournit une appli VB qui tourne sur laquelle je me base.
Mon soucis c'est qu'en PHP le login + password ne semble pas être bon.

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
 
<?php
 
$url_mm="http://ws.xxxxxx:7777/xxxxx/xxxxx/xxxxxx?wsdl";
 
$params = array (
                        'trace'    => 1
                );
 
$ns = 'xxxxxx'; //Namespace of the WS.
 
$client = new SoapClient($url_mm, $params);
 
$headerbody = array(
                        'user'=>'xxxxx',
                        'Password'=>'xxxxx'
);
 
$header = new SOAPHeader($ns, 'Principal', $headerbody);
 
$client->__setSoapHeaders($header);
 
 
        $client->__soapCall(
                                'getMakes',
                                array(
                                                'FR',
                                                'FR',
                                                1,
                                                new soapVar(
                                                        '2009-12-12',
                                                        XSD_DATE
                                                )
                                )
);
 
?>
Le code VB qui fonctionne pour une autre methode, envoi le xml 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
  Dim requeteSOAP As String = "<?xml version=" + """1.0"" encoding=""utf-8""?>" + ControlChars.Lf
        requeteSOAP += "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">" + ControlChars.Lf
        requeteSOAP += "<soapenv:Header>" + ControlChars.Lf
        requeteSOAP += "<ns1:Principal soapenv:mustUnderstand=""0"" xmlns:ns1=""xxxxxxxx"">" + ControlChars.Lf
        requeteSOAP += "<ns1:user>xxxxxx</ns1:user>" + ControlChars.Lf
        requeteSOAP += "<ns1:password>xxxxxx</ns1:password>" + ControlChars.Lf
        requeteSOAP += "</ns1:Principal>" + ControlChars.Lf
        requeteSOAP += "<ns2:underlying-user soapenv:mustUnderstand=""0"" xmlns:ns2=""xxxxxx""></ns2:underlying-user>" + ControlChars.Lf
        requeteSOAP += "</soapenv:Header>" + ControlChars.Lf
        requeteSOAP += "<soapenv:Body>" + ControlChars.Lf
        requeteSOAP += "<getModels soapenv:encodingStyle=""http://schemas.xmlsoap.org/soap/encoding/"">" + ControlChars.Lf
        requeteSOAP += "<targetMarket xsi:type=""xsd:string"">FR</targetMarket>" + ControlChars.Lf
        requeteSOAP += "<transactionMarket xsi:type=""xsd:string"">FR</transactionMarket>" + ControlChars.Lf
        requeteSOAP += "<vehicleType xsi:type=""xsd:int"">"+ vehicleType +"</vehicleType>" + ControlChars.Lf
        Dim strDate As string = DateTime.Now.ToString("yyyy-MM-dd")
        requeteSOAP += "<searchDate xsi:type=""xsd:date"">"& strDate &"</searchDate>" + ControlChars.Lf
        requeteSOAP += "<registrationDate xsi:type=""xsd:date"">"+ RegDate +"</registrationDate>" + ControlChars.Lf
        requeteSOAP += "<yearModel xsi:type=""xsd:int"">"& Request.Form("cmbMillesimes") &"</yearModel>" + ControlChars.Lf
        requeteSOAP += "<makeOID xsi:type=""xsd:int"">"+ makeOID +"</makeOID>" + ControlChars.Lf
        requeteSOAP += "</getModels>" + ControlChars.Lf
        requeteSOAP += "</soapenv:Body>" + ControlChars.Lf
        requeteSOAP += "</soapenv:Envelope>"
Le code xml généré capturé par tcpdump
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
POST /xxxxx/xxxxx/xxxxxxx HTTP/1.1
Host: ws.xxxxxx:7777
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.2.6-1+lenny3
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 914

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="xxxxxxxx" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>
<ns1:Principal>
<item><key>user</key><value>xxxx</value></item>
<item><key>Password</key><value>xxxx</value></item>
</ns1:Principal>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:getMakes>
<targetMarket xsi:type="xsd:string">FR</targetMarket>
<transactionMarket xsi:type="xsd:string">FR</transactionMarket><vehicleType xsi:type="xsd:int">1</vehicleType>
<searchDate xsi:type="xsd:date">2009-12-12</searchDate><registrationDate xsi:nil="true"/>
<yearModel xsi:nil="true"/>
</ns1:getMakes>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Est-ce que mon soucis viendrait du fait que ce qui est envoyé en PHP pour le user et password contient les balises item et value en + comparé à VB?
Si oui comment puis-je faire pour enlever ses balises? ou au mieux procédé comme le VB, c'est à dire fournir le même xml à ce web service


Merci beaucoup