8768 sujets

Développement web côté serveur, CMS

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 :
<?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 Smiley smile
Modifié par Kikimagik (30 Jul 2015 - 12:55)