Je suis en train de faire la demande avec cette structure:client PHP Soap avec des types complexes
<SOAP-ENV:Body>
<ns1:getCreditReportTypes>
<reportTypeRequest>
<reportParams xsi:type="ns1:personCreditReportParams">
<personId>4</personId>
<consentConfirmed>true</consentConfirmed>
</reportParams>
</reportTypeRequest>
</ns1:getCreditReportTypes>
</SOAP-ENV:Body>
Voici mon php-code:
$obj = new \stdClass();
$obj->personId = 4;
$obj->consentConfirmed = true;
$data = new \SoapVar($obj, SOAP_ENC_OBJECT, "personCreditReportParams", $namespace, "reportParams");
$res = $this->client->getCreditReportTypes(new \SoapParam($data,"reportTypeRequest"));
Cependant, php génère XML non valide:
<SOAP-ENV:Body>
<ns1:getCreditReportTypes xsi:type="ns1:personCreditReportParams">
<consentConfirmed>true</consentConfirmed>
<personId>4</personId>
</ns1:getCreditReportTypes>
</SOAP-ENV:Body>
Comment puis-je créer un XML valide avec object-way?
Merci pour la réponse, mais cela n'a pas fonctionné. Je pense que c'est à cause de l'héritage. PackageGenerator a créé la classe abstraite reportParams et la classe personCreditReportParams, mais il ne crée pas l'élément alors que je transmets la variable de la classe personCreditReportParams –
dans ce cas vous pouvez toujours remplacer l'objet SoapClient en utilisant votre propre implémentation dans https://github.com/WsdlToPhp/PackageEws365/blob/develop/SoapClient/SoapClient.php afin de modifier la requête XML avant qu'elle ne soit réellement envoyée. Regardez les options de génération dans https://github.com/WsdlToPhp/PackageEws365/blob/develop/generate.sh –