|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
Bonjour,
Je cherche depuis mon site a appelé un webservice sur une machine distante. Est-ce possible ? Quelqu'un pourrait-il m'indiquer la marche à suivre svp merci. Je n'ai jamais fait et avoue être un peu perdu... ![]() HPL76 |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
oui, il est possible de faire ça. Quel webservice veux tu utiliser?
http://php.net/manual/en/refs.webservice.php
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|
|
00
|
|
|
#3 | ||||||
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
Bonjour gene69 et merci de te soucier d'un problème qui n'est pas le tien !
Je suis vraiment novice en la matière. Voilà, j'ai 3 fichiers : un index.php, un serveur.php et un client.php. Mon index se présente de la sorte Code :
Voici le fichier client.php Code :
Code :
HPL76 |
||||||
|
|
00
|
|
|
#4 | ||
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
Le fichier index.php m'a renvoyé
Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
Chacune des lignes affichées correspond aux opérations exposées par le webservice.
Sais-tu laquelle tu veux utiliser ?
__________________
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
Ça veut dire que la connexion est belle et bien faite ?
Code php :
$client = new SoapClient("http://xx.xx.xx.xx/WS/MonService.asmx?wsdl"); Je voudrais être sur de bien comprendre...c'est la dll qui fait ? A vrai dire, je ne sais pas quelle opération je dois utiliser mais admettons que ce soit la première LoginResponse Login(Login $parameters) ? En tout cas merci vivement pour votre esprit communautaire !!! HPL76. |
|
|
00
|
|
|
#7 | ||
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
ça veut dire qu'il a bien trouvé la WSDL (le fichier qui décrit tes webservices), qu'il l'a lue et trouvé les opérations disponibles.
Appeler un webservice signifie appeler une opération exposée par le serveur. Pour appeler la fonction (opération) Login : Code :
Maintenant il faut que tu fouines dans la wsdl pour savoir comment formater les paramètres à envoyer...
__________________
|
||
|
00
|
|
|
#8 | ||
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
Oui je commence à y voir plus clair, je comprends mieux (grâce à toi/vous)
Pour l'appel j'avais fait ceci : Code :
Bizarre, non ? Le tableau ne devrait pas être rempli et le xml généré ? Cordialement, HPL76 |
||
|
|
00
|
|
|
#9 |
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
Là il va falloir que tu nous donnes un peu plus de billes... Au moins les bons noms de champs.
Et aussi le schéma décrivant les objets Login et LoginResponse
__________________
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
Essayes d'encapsuler tes params dans un autre tableau :
Code :
$param = array('Login' => array('champ 1'=>'valeur en dur 1', 'champ 2'=>'valeur en dur 2', 'champ 3 '=>'valeur en dur 3'));//4ème et 5ème champs sont facultatifs
__________________
|
|
10
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
Bonjour...et je rajouterai 1000 MERCIS, t'es un chef pc.bertineau !!!
Le stdClass Object ( [LoginResult] => ...) me renvoie bien quelque chose maintenant. Comment as-tu su ? Bien cordialement, HPL76 |
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
J'ai juste eu les mêmes interrogations que toi quand j'ai commencé à utiliser SOAP...
Et d'une manière générale, si la réponse t'arrive encapsulée dans un array('LoginResponse' => array(...)), il y a de grandes chances que la requête doivent l'être également ![]() Tu peux cliquer sur Résolu maintenant et pourquoi pas voter pour mon post qui t'a apporté la solution
__________________
|
|
10
|
|
|
#13 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
C'est chose faite !
Je réitère mes remerciements. si tout le monde pouvait avoir cette attitude ![]() Bien à toi, bonne journée, @bientôt ! HPL76 |
|
|
00
|
|
|
#14 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
C'est remoi, désolé.
Le fait d'encapsuler à fonctionner avec stdClass Object ( [LoginResult] => ) Ce qui donnait : $param = array('Login' => array('champ 1'=>'valeur en dur 1', 'champ 2'=>'valeur en dur 2', 'champ 3 '=>'valeur en dur 3')); Et j'ai beau faire la même chose avec une autre méthode : $new = array('Fonction2' => array('param1'=>'val1', 'param2'=>'val2')); J'obtiens un stdClass Object ( [Fonction2Result] => ) Bizarre, non ? J'ai tenté de ré-encapsuler le tout, en vain... Le fonctionnement est différent ? Tu aurais une idée ? Cdlt, HPL76 |
|
|
00
|
|
|
#15 |
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
ça dépend beaucoup des types décrit dans la partie schéma de la wsdl (soit directement dedans, soit via un lien vers un schéma xsd).
__________________
|
|
00
|
|
|
#16 | ||
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
Bah je t'explique, la première étape était de récupérer un id de session.
La 2ème étape est d'exécuter à partir de l'id de session une requête SQL basique $req. A partir de : Code :
$result = $client->__soapCall ('Login', $param); Code :
Code :
$result2 = $client2->__soapCall ('ExecuteSql', $param2); Code :
stdClass Object ( [ExecuteSqlResult] => ) HPL76 |
||
|
|
00
|
|
|
#17 |
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
rien à voir. Mais qu'est sensé retourné ton opération executeSQL ?
Qu'as-tu décrit dans la wsdl ? Je peux pas t'aider sans connaître les structures attendues en request et en response...
__________________
|
|
00
|
|
|
#18 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
Bonjour pc.bertineau,
La ligne incriminée est : $result2 = $client2->__soapCall ('ExecuteSql', $param2); Le résultat retourné est : stdClass Object ( [ExecuteSqlResult] => ) J'avais pourtant eu le réflexe d'encapsuler mon array, en vain... Un var_dump renvoie : object(stdClass)#4 (1) { ["ExecuteSqlResult"]=> string(283) "" } Ca veut bien dire qu'il y a du monde, non ? $param2 récupère l'id de session que tu m'as aidé à récupérer hier et l'autre paramètre est la requête. La fonction ExecuteSql est censée me renvoyer un fichier xml d'un simple select. Bien à toi ! Mega |
|
|
00
|
|
|
#19 |
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
et un var_dump($result2=>ExecuteSql) ?
Montre moi ta WSDL ! Cache les URL si c'est sensible mais sans ça je vais pas pouvoir t'aider beaucoup !
__________________
|
|
00
|
|
|
#20 | ||
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 180 ![]() |
Re,
Tu veux que je te donne le résultat/format xml de l'opération ? Voilà ce que j'ai en ma possession : Code :
Bien cordialement, hpl |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com