Utilisation d'un Web Service

Résolu/Fermé
alderion
Messages postés
16
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
27 décembre 2014
- Modifié par alderion le 27/12/2014 à 14:18
Whismeril
Messages postés
17804
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2022
- 27 déc. 2014 à 18:36
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

Whismeril
Messages postés
17804
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2022
859
27 déc. 2014 à 14:05
Bonjour, pour poster ton code en utilisant la coloration syntaxique.
0
alderion
Messages postés
16
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
27 décembre 2014
2
27 déc. 2014 à 15:07
Voilà qui est corrigé
0
dsy73
Messages postés
9018
Date d'inscription
dimanche 22 août 2010
Statut
Contributeur
Dernière intervention
23 octobre 2020
2 532
27 déc. 2014 à 16:16
Salut
je n'ai pas compris d'où vient GetProductsResult
As-tu essayer de faire un print de $res seul ?
0
alderion
Messages postés
16
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
27 décembre 2014
2
27 déc. 2014 à 18:20
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);
?>
0
Whismeril
Messages postés
17804
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2022
859
27 déc. 2014 à 18:36
Si ton problème est résolu, merci de le signaler avec le lien dédié sous le titre de la discussion.
0