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
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
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 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 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>"
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?
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>
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
Partager