est ici l'appel que je suis en train de faire:Passage de nusoap à PHP5 Savon - ont besoin d'un véritable essor
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<urn:SessionHeader xmlns:urn="http://www.mywebservice.com/webservices/SoapService" xmlns="http://www.mywebservice.com/webservices/SoapService" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<urn:sessionId xmlns:urn="http://www.mywebservice.com/webservices/SoapService">LOGINTOKEN=your instance name</urn:sessionId>
</urn:SessionHeader>
</soap:Header>
<soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<ns2:login xmlns:ns2="http://www.mywebservice.com/webservices/SoapService">
<wsUser>
<entityId>0</entityId>
<password>your password</password>
<username>your username</username>
</wsUser>
</ns2:login>
</soap:Body>
Mais je vais avoir du mal à trouver comment mettre en place les en-têtes personnalisés dans Savon de PHP5. Avec nuSoap je pourrais juste mettre le tout dans une variable et ensuite utiliser $client->setHeader($headerVar)
mais je ne trouve rien de similaire en PHP. Si je pouvais reproduire cet appel, je peux comprendre le reste. Toute aide serait appréciée!
Merci d'avance!
Mise à jour: J'ai suivi le tutoriel après le didacticiel et j'ai lu les documents PHP, mais rien ne semble fonctionner. Je peux faire ce que je veux avec curl (ainsi que nuSoap) mais je pensais que le savon natif PHP5 serait plus facile et peut-être plus stable. Je suppose que non ...
Mise à jour 2 Voici le code que je suis en train:
$soapurl = 'http://www.mywebservice.com/webservices/SoapService?wsdl';
$client = new SoapClient($soapurl,array('trace'=>true));
$token = "LOGINTOKEN=your instance name";
$header = new SoapHeader('http://www.mywebservice.com/webservices/SoapService', 'SessionHeader', array('sessionId' => $token));
$client->__setSoapHeaders($header);
$client->login(array("wsUser" => array('entityId'=>'0','username'=>'my username','password'=>'my password')));
Et l'erreur que je reçois:
**Fatal error**: Uncaught SoapFault exception: [ns1:InvalidSecurity] An error was discovered processing the <wsse:Security> header in C:\www\soap\index.php:12 Stack trace: #0 C:\www\soap\index.php(12): SoapClient->__call('login', Array) #1 C:\www\soap\index.php(12): SoapClient->login(Array) #2 {main} thrown in C:\www\soap\index.php on line 12
Mise à jour 3 Il ressemble à la "sessionId" est envoyé en tant que "clé" avec le jeton envoyé en tant que "valeur".
*REQUEST*:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.mywebservice.com/webservices/SoapService">
<SOAP-ENV:Header>
<ns1:SessionHeader><item><key>sessionId</key><value>LOGINTOKEN=my token</value></item>
</ns1:SessionHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body><ns1:login><wsUser><entityId>0</entityId><password>my password</password><username>my username</username></wsUser></ns1:login></SOAP-ENV:Body></SOAP-ENV:Envelope>
SoapClient :: __ setSoapHeaders() ne fait pas ce que vous voulez? http://php.net/soapclient.setsoapheaders – Inigoesdr
Il pourrait, et j'ai expérimenté avec l'implémenter, mais je ne peux pas comprendre comment le rendre le format exact. – TerryMatula