Utilisation d'un Web Service [Résolu/Fermé]

Signaler
Messages postés
16
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
27 décembre 2014
-
Messages postés
14617
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 août 2020
-
Bonjour,

Je viens de comprendre comment il était possible d'utiliser un web service en utilisant l'exemple disponible via ce lien:

https://www.developpez.net/forums/d1178398/php/bibliotheques-frameworks/web-service-appeller-webservice-php/

J'ai donc adapté cet exemple pour tenter de me connecter à un autre service web.

Voici mon code une fois modifié:




<?php

ini_set('default_socket_timeout', 60);

$wsdl = "http://xtract.basgroup.nl/Xtract.asmx?WSDL";
$client = new SoapClient($wsdl);
 
$customerID=123456;
$password='password';

 
$res = $client->GetProducts(array('customerID' => $customerID , 'password' => $password));
print $res->GetProductsResult;
 
?>


Lors de son exécution, je rencontre cette erreur:

Catchable fatal error: Object of class stdClass could not be converted to string in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\index.php on line 13

Je suppose donc que les données que je rapatrie dans la variable $res ne peuvent pas être converties en chaîne de caractère.

J'ai parcouru le fichier WSDL du service web (http://xtract.basgroup.nl/Xtract.asmx?WSDL) afin de savoir comment se présentent les données que je récupère, en vain.

Qu'est-ce qu'un objet de classe stdClass?
Pouvez-vous m'aider à sortir de ce pétrin?

Merci d'avance.

4 réponses

Messages postés
14617
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 août 2020
564
Bonjour, pour poster ton code en utilisant la coloration syntaxique.
Messages postés
16
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
27 décembre 2014
2
Voilà qui est corrigé
Messages postés
9016
Date d'inscription
dimanche 22 août 2010
Statut
Contributeur
Dernière intervention
16 février 2020
2 268
Salut
je n'ai pas compris d'où vient GetProductsResult
As-tu essayer de faire un print de $res seul ?
Messages postés
16
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
27 décembre 2014
2
Merci pour l'aide, mais j'ai finalement trouvé comment faire:

<?php
// Je modifie la valeur "default_socket_timeout" de la configuration php afin de laisser le temps à mon script de fonctionner.
ini_set('default_socket_timeout', 60);

// Je range dans une variable l'adresse du Web Service.
$wsdl = "http://xtract.basgroup.nl/Xtract.asmx?WSDL";
// Je fournis un client SOAP à l'aide de la classe PHP SoapClient().
$client = new SoapClient($wsdl);
// Je range les informations attendues par le Serveur dans des variables.
$customerID=26221557;
$password="******"; // Vous ne pensiez tout de même pas que j'allais mettre mon mot de passe ;-) ?

// Je fais correspondre les variables de notre script avec celles attendues par le serveur.
// J'ai volontairement utilisé les mêmes noms que ceux attendus par le web service.
$res = $client->GetProducts(array('customerID' => $customerID , 'password' => $password));

// J'ouvre en lecture et écriture le fichier qui va récupérer les informations.
$products_file = fopen ("produits.xml", "r+");

// J'y injecte le résultat.
$contenu_du_fichier = fputs ($products_file,serialize($res->GetProductsResult));
// Je referme le fichier.
fclose ($products_file);
?>
Messages postés
14617
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 août 2020
564
Si ton problème est résolu, merci de le signaler avec le lien dédié sous le titre de la discussion.