Bonjour,
Dans le cadre d'un projet, je dois faire appelle à un webservice pour utiliser ses méthodes.
Pour cette partie, tout fonctionne : l'appelle du web service, le listing des méthodes disponible et l'appelle d'une méthode avec paramètres.
Le problème, c'est que le webservice attend cela :
Et que moi, SOAP génère ceci :
On voit très nettement deux choses : le namespace ns1 que je n'arrive pas à retirer et le xmlns="HDM.WebService" que je n'arrive pas à insérer.
Voici mon code php :
Merci de votre aide
Modifié par Kikimagik (30 Jul 2015 - 12:55)
Dans le cadre d'un projet, je dois faire appelle à un webservice pour utiliser ses méthodes.
Pour cette partie, tout fonctionne : l'appelle du web service, le listing des méthodes disponible et l'appelle d'une méthode avec paramètres.
Le problème, c'est que le webservice attend cela :
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthHeader xmlns="HDM.WebService">
<ServiceKey>string</ServiceKey>
</AuthHeader>
</soap:Header>
<soap:Body>
<AddCustomer xmlns="HDM.WebService">
<customer>
<Number>string</Number>
<Name>string</Name>
<Address>string</Address>
<ZipCode>string</ZipCode>
<City>string</City>
<Country>string</Country>
<VisitAddress>string</VisitAddress>
<VisitZipCode>string</VisitZipCode>
<VisitCity>string</VisitCity>
<VisitCountry>string</VisitCountry>
<Phone>string</Phone>
<Fax>string</Fax>
<Contacts>
<HDCustomerContact>
<Username>string</Username>
<Password>string</Password>
<Name>string</Name>
<FamilyName>string</FamilyName>
<Address>string</Address>
<ZipCode>string</ZipCode>
<City>string</City>
<Country>string</Country>
<Phone>string</Phone>
<Mobile>string</Mobile>
<Fax>string</Fax>
<EMail>string</EMail>
<Role>OrganisationAdministrator or OrganisationUser or AnonymousUser</Role>
</HDCustomerContact>
</Contacts>
</customer>
</AddCustomer>
</soap:Body>
</soap:Envelope>
Et que moi, SOAP génère ceci :
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:ns1="HDM.WebService"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<ns1:AuthHeader>
<ns1:ServiceKey>************</ns1:ServiceKey>
</ns1:AuthHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:AddCustomer>
<ns1:customer>
<ns1:Number>20300001</ns1:Number>
<ns1:Name>COMPTOIR DU SURGELE</ns1:Name>
<ns1:ZipCode>03</ns1:ZipCode>
<ns1:City>SAINT REMY EN ROLLAT</ns1:City>
<ns1:Country>FR</ns1:Country>
<ns1:VisitAddress>ggrg</ns1:VisitAddress>
<ns1:VisitZipCode>dfgdfg</ns1:VisitZipCode>
<ns1:VisitCity>fgdfg</ns1:VisitCity>
<ns1:VisitCountry>fgdfgdf</ns1:VisitCountry>
<ns1: Phone>0473867869</ns1: Phone>
<ns1:Fax>0473867423</ns1:Fax>
<ns1:Contacts>
<ns1:HDCustomerContact>
<ns1:Username>rdfd</ns1:Username>
<ns1: Password>dfdf</ns1: Password>
<ns1:Name>dfdf</ns1:Name>
<ns1:FamilyName>dfd</ns1:FamilyName>
<ns1:Address>dfd</ns1:Address>
<ns1:ZipCode>dfd</ns1:ZipCode>
<ns1:City>dfd</ns1:City>
<ns1:Country>dfdf</ns1:Country>
<ns1: Phone>dfdfdf</ns1: Phone>
<ns1:Mobile>dfdf</ns1:Mobile>
<ns1:Fax>fere</ns1:Fax>
<ns1:EMail>gbgb</ns1:EMail>
<ns1:Role>OrganisationAdministrator</ns1:Role>
</ns1:HDCustomerContact>
</ns1:Contacts>
<ns1:IsFinalCustomer>false</ns1:IsFinalCustomer>
</ns1:customer>
</ns1:AddCustomer>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
On voit très nettement deux choses : le namespace ns1 que je n'arrive pas à retirer et le xmlns="HDM.WebService" que je n'arrive pas à insérer.
Voici mon code php :
$client = new SoapClient("http://mon-domaine/HD/WebService/HDService.asmx?WSDL", array('trace' => 1, 'soap_version' => SOAP_1_2, 'uri' => 'HDM.WebService'));
// Créer le header de la requete
$headerbody = array('ServiceKey' => '************');
$header = new SoapHeader("HDM.WebService", "AuthHeader", $headerbody);
$client->__setSoapHeaders($header);
$client->__soapCall("AddCustomer", array($UnClient));
Merci de votre aide
Modifié par Kikimagik (30 Jul 2015 - 12:55)