Je voudrais créer soapVars avec des attributs comme celui-ci:Comment ajouter des attributs à soapVars
<tag attr="xxx">yyy</tag>
Est-ce possible avec le constructeur SoapVar, mais sans en utilisant XSD_ANYXML et chaînes XML brutes?
Je voudrais créer soapVars avec des attributs comme celui-ci:Comment ajouter des attributs à soapVars
<tag attr="xxx">yyy</tag>
Est-ce possible avec le constructeur SoapVar, mais sans en utilisant XSD_ANYXML et chaînes XML brutes?
La meilleure façon de le faire est la suivante:
<?php
$tag['_'] = 'yyy';
$tag['attr'] = 'xxx';
$tagVar = new SoapVar($tag, SOAP_ENC_OBJECT);
?>
le résultat serait:
<tag attr="xxx">yyy</tag>
Après avoir passé de nombreuses heures à la recherche d'une solution, je ne ai trouvé cette solution de contournement. Fonctionne dans mon cas.
/**
* A SoapClient derived class that sets the namespace correctly in the input parameters
*/
class SoapClientNS extends SoapClient {
// return xml request
function __doRequest($request, $location, $action, $version, $one_way = NULL) {
//Replace each <Typename> with <ns1:Typename> or
$request = str_replace('RequestBase', 'ns1:RequestBase', $request);
return parent::__doRequest($request, $location, $action, $version, $one_way);
}
}
$client = new SoapClientNS($wsdlURL);
$client->getAllBooks(array('RequestBase' => array('code' => 'AAAA', 'password' => '234234fdf')));
Le XML demande était quelque chose comme ceci:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://www.travco.co.uk/trlink/xsd/country/request">
<env:Body>
<ns1:getAllBooks>
<RequestBase code="AAAA" password="234234fdf"/>
</ns1:getAllBooks>
</env:Body>
</env:Envelope>
C'est bon et serait encore mieux avec XML parser. Vous ne voulez probablement pas remplacer la chaîne 'RequestBase' dans n'importe quelle balise si cela se produit. –
La réponse de pcmind n'a pas fonctionné pour moi, et pas non plus si vous essayez dans PhpFiddle.
Je suis tombé sur cet article, ce qui crée essentiellement xml avec XMLWriter: http://eosrei.net/articles/2012/01/php-soap-xml-attributes-namespaces-xmlwriter
Cela fonctionne tout à fait pour mon cas.
wow! Où as-tu trouvé ça? – goorj
vous pouvez toujours vous référer à php.net :) – pcmind
la section des commentaires? :-) – goorj