OVH Cloud OVH Cloud

Soap et probleme de date

1 réponse
Avatar
syc2000
Bonjour,

je découvre la méthode SOAP, et il y a quelques subtilités qui
m'échappent...

A partir d'un serveur Apache et en PHP, je dois aller lire des
fonctions sur un serveur distant tournant sous IIS.
Ces fonctions sont regroupées dans un exécutable sur ce serveur
distant, et activé comme un service Web.

Ces fonctions me permettent de faire des réservations en ligne.

J'ai le fichier de déclaration WSDL que j'ai mis dans mon répertoire
courant (je ne sais pas si c'est la bonne méthode), et qui contient
l'adresse du service distant:

<service name="ISVRWEBservice">
<port name="ISVRWEBPort" binding="tns:ISVRWEBbinding">
<soap:address
location="http://xxx.xxx.xxx.xxx/ServeurWeb/SVRWeb.exe/soap/ISVRWEB" />
</port>
</service>


dans mon fichier php principal, j'appelle les fonctions de ce service:


// première étape : désactiver le cache lors de la phase de test
ini_set("soap.wsdl_cache_enabled", "0");

// lier le client au fichier WSDL
$clientSOAP = new SoapClient("ISVRWEBservice.wsdl");

// executer la methode qui demande la version
echo "Version: ".$clientSOAP->GetVersionServeur()."<br>";

$seance = array(
'NoComplexe' => 1,
'NoSalle' => 1,
'Heure' => date("d/m/Y H:i:s", mktime(14, 0, 0, 10, 24, 2006))
);

echo "Places restantes: ".$clientSOAP->GetPlaceRestante($seance, 0, 0,
'')."<br>";


J'arrive, a priori, bien à utiliser le service car la première
fonction me retourne bien le numéro de la version.
par contre, j'ai un problème de date sur la 2ème fonction (pourtant
j'ai testé que $seance['Heure'] est bien correctement renseigné)

Voici le message d'erreur que j'ai:

Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Server] Chaine
date incorrecte : 24/10/2006 14:00:00 in C:\wamp\www\test\test.php:38
Stack trace: #0 [internal function]:
SoapClient->__call('GetPlaceRestant...', Array) #1
C:\wamp\www\test\test.php(38):
SoapClient->GetPlaceRestante(Array, 0, 0, '') #2 {main} thrown in
C:\wamp\www\test\test.php on line 38

J'ai lancé la commande __getTypes(), dont voici le résultat pour la
structure $seance:

struct TSeanceParam { int NoComplexe; int NoSalle; dateTime Heure; }


Merci de votre aide,
Sylvie

1 réponse

Avatar
dwojylac.nospam
wrote:

$seance = array(
'NoComplexe' => 1,
'NoSalle' => 1,
'Heure' => date("d/m/Y H:i:s", mktime(14, 0, 0, 10, 24, 2006))
);

echo "Places restantes: ".$clientSOAP->GetPlaceRestante($seance, 0, 0,
'')."<br>";

Voici le message d'erreur que j'ai:

Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Server] Chaine
date incorrecte : 24/10/2006 14:00:00 in C:wampwwwtesttest.php:38
Stack trace: #0 [internal function]:
SoapClient->__call('GetPlaceRestant...', Array) #1
C:wampwwwtesttest.php(38):
SoapClient->GetPlaceRestante(Array, 0, 0, '') #2 {main} thrown in
C:wampwwwtesttest.php on line 38

J'ai lancé la commande __getTypes(), dont voici le résultat pour la
structure $seance:

struct TSeanceParam { int NoComplexe; int NoSalle; dateTime Heure; }


en général le format dateTime pour les enregistrements c'est du type
YYYY-MM-DD HH:MM:SS
donc à la ligne
'Heure' => date("d/m/Y H:i:s", mktime(14, 0, 0, 10, 24, 2006))
j'essaierais
'Heure' => date("Y-m-d H:i:s", mktime(14, 0, 0, 10, 24, 2006))

--
http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.