Bonjour,
Cette question a déjà été posée sur plusieurs forums mais toujours sans réponse...
J'aimerais savoir comment peut-on s'authentifier sur un Web Service SOAP sur un site en PHP?
Voici le code PHP qui fonctionne :
<?php
include("../../config/config.inc.php");
class SoapHeaderAuthUser {
/** @var string */
public $login;
/** @var string */
public $password;
public function __construct($login, $password) {
$this->login = $login;
$this->password = $password;
}
}
try {
$options = Array(
'trace' => true,
'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP
);
$client = new SoapClient(WEB_PATH."soap/service.php?class=biens&wsdl", $options);
$loginpassword = new SoapHeaderAuthUser("monlogin", "monpassword");
$soapHeaders[] = new SoapHeader(WEB_PATH.'soap/', 'authUser', $loginpassword);
$client->__setSoapHeaders($soapHeaders);
$res = $client->getBiens("", "`id`");
foreach($res as $bien) {
echo $bien->id.": ".utf8_decode($bien->commune).", ".utf8_decode($bien->ville)."<br />";
}
} catch(Exception $e) {
echo $e->getMessage();
echo "<hr><strong>Raw Soap response:</strong><br>";
echo htmlentities($client->__getLastResponse());
echo "<hr><strong>Raw Soap request:</strong><br>";
echo htmlentities($client->__getLastRequest());
}
?>
Pour l'authentification, j'utilise
SOAPAjouteEntête("authUser","login:monlogin,password:monpassword","
http://www.monsite.be/soap/",Vrai)
J'ai comme résultat "Invalid Account".
Quand je vois le code PHP, le paramètre ajouté dans le header soap est un objet. Hors si je fais la même chose sous Windev, SOAPAjouteEntête n'accepte pas un objet en paramètre, il faut absolument une chaine de caractères. Comment dois-je faire pour envoyer monlogin et monpassword ?
Merci d'avance