|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Membre habitué
![]() Inscription : septembre 2003 Messages : 597 ![]() |
Bonjour,
Je galère pour me connecter à un webservice. L'entreprise m'a donné un exemple de fichier xml d'entrée afin de tester si tout fonctionne. Je me connecte de cette façon: Code :
Citation:
J'ai appelé la personne qui s'occupe du webservice mais apparemment elle voit pas d'où ça pourrait venir. Quelqu'un aurait une idée ? Merci |
|||
|
|
00
|
|
|
#2 | ||
|
Membre éclairé
![]() Développeur Web Inscription : avril 2004 Messages : 319 ![]() |
Bonjour.
Je pense que c'est la syntaxe pour l'appel avec __soapcall(). Perso je fais toujours comme ceci : Code php :
Enfin en tout cas je pense que ca vient de là. Ton message d'erreur indique qu'il reçoit mal les données que tu envoies. |
||
|
|
00
|
|
|
#3 | |||||
|
Membre habitué
![]() Inscription : septembre 2003 Messages : 597 ![]() |
Merci beaucoup pour ton aide. En effet ça se précise.
Maintenant j'ai le message d'erreur: Citation:
je voudrais savoir comment tu fais tu pour passer le xml d'entrée. Comme ceci ? Code :
Code :
Et est ce que le fait de passer un tableau associatif en argument ne perturbe pas le webservice (écrit en java) ? Merci d'avance. |
|||||
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Développeur Web Inscription : avril 2004 Messages : 319 ![]() |
Qu'appelles-tu le xml d'entrée ? Le fichier WSDL ? Peux-tu le poster ?
Qu'as-tu dans ta variable $adress ? D'ou viens l'affichage de ton erreur ? Du serveur ou du client ? Les affichages d'erreur sont normalement en anglais... Le login sert-il à t'authentifier pour effectuer ta requête SOAP ? Ou c'est simplement un string qu'il faut passe en paramètre dans une méthode ? Sinon pour le tableau associatif ça peut te changer comment les données sont encapsulés dans la requête SOAP, et donc comment ton serveur en JAVA les réceptionne. Ça dépend en fait comment le WSDL à été fait... Mais normalement ca ne change rien. Voili voilou, j'espère que tu m'as compris ^^ |
|
|
00
|
|
|
#5 | ||||||
|
Membre habitué
![]() Inscription : septembre 2003 Messages : 597 ![]() |
Citation:
tester la connexion et s'assurer que je récupère bien un xml de retour. Le xml est du style: Code :
Je passe ce xml à la méthode et normalement elle me retourne la réponse sous forme de fichier xml. Il ne me reste plus qu'à "parser" les données qui m'interesse. Citation:
http://webservices.blabla.org/index....m_methode/wsdl Citation:
Citation:
fournit le login et le mdp. Toutefois ils devraient être bon puisque le technicien à testé chez lui et ça marche. Une idée ? |
||||||
|
|
00
|
|
|
#6 | ||||||
|
Membre éclairé
![]() Développeur Web Inscription : avril 2004 Messages : 319 ![]() |
Du coup t'as pas besoin de passer ton xmlstring en paramètre. C'est juste un exemple qu'ils t'ont donné, une requete SOAP type qui doit arriver sur le serveur. Donc essaie de passer juste le login et le mot de passe.
Sinon ce que tu peux faire c'est faire afficher la requete qui part et la requete qui revient : Code :
Et ta 'Request' devrait correspondre à ton xml d'exemple. Sinon si c'est un problème d'authentification, je ne l'ai jamais utilisé, donc je ne peux pas trop t'aider. Il y a ce post déjà : http://www.developpez.net/forums/sho...d.php?t=523784 Je pense aussi que tu n'a pas trop bien compris le role du WSDL. C'est lui que tu dois suivre, c'est lui qui t'indique quelles données envoyer et sous quel format pour telle ou telle méthode. Je te donne un de mes bouts de code pour exemple : Dans le WSDL : Code XML :
Code client : Code PHP :
Voila en espèrant que ca t'aide ! Bon courage |
||||||
|
|
00
|
|
|
#7 | |||||||||
|
Membre habitué
![]() Inscription : septembre 2003 Messages : 597 ![]() |
Je te remercie beaucoup pour ton aide et pour ton exemple.
En effet je ne connaissais pas cette façon de passer les paramètres au webservice (dans un tableau associatif). Comme je l'ai dis plus haut, je construit d'abord un flux xml d'entrée (conforme à ce qu'attend le webservice) du genre: Code :
wsdl qui va bien: Code :
Je fais ça avec plusieurs webservices et ça fonctionne bien. J'ai donc essayé ta méthode avec le webservice qui me pose pb, mais je voudrais savoir une choses: Le nom des attributs dans le tableau associatif doivent t-ils être les mêmes que ceux du wsdl ? Par ex dans mon wsdl j'ai: Code :
Code :
J'ai donc passé le tableau $params en argument à la méthode, et maintenant j'ai l'erreur (qui vient probablement du webservice) : Citation:
Encore merci d'avance. |
|||||||||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 9 ![]() |
Bonjour à vous !
J'ai un problème "presque" identique (d'ailleurs j'ai ouvert un topic today, help Donc bien sur je ne serai pas vraiment utile. Cependant, j'ai une question qui pourrait amener à d'autres réflexions : j'ai remarqué des fonctions telles que : SoapParam() http://fr2.php.net/manual/fr/functio...-construct.php et SoapVar() http://fr2.php.net/manual/fr/functio...-construct.php Peut être peuvent-elles être utiles ? Désolé si je fait fausse route... Bon courage Tintin, je compatis |
|
|
00
|
|
|
#9 | ||||||||||||
|
Membre habitué
![]() Inscription : septembre 2003 Messages : 597 ![]() |
Bon, avant de jeter l'éponge avec ce
de webservice je vais essayer de résumer clairement la situation. J'ai un exemple d'enveloppe SOAP (qui normalement fonctionne) a passer au webservice en question : Code :
Je construit donc la liste des paramètres via un tableau: Code :
Code :
Code :
A chaque fois le serveur me demande de renseigner un login. Voici ma requête : Code :
Code :
Celà veut donc dire qu'il y a un pb dans le passage des paramètres, ou en tout cas qu'ils ne sont pas passés correctement. J'ai bien sûr essayé toutes les combinaisons possible (passer le login et mdp à la suite du array, dans un autre array, avec un array à 2 dimension etc.....), nada ! Y a t-il une autre manière de passer des paramètres et si oui laquelle ???? Un grand merci d'avance. |
||||||||||||
|
|
00
|
|
|
#10 | ||||
|
Membre éclairé
![]() Développeur Web Inscription : avril 2004 Messages : 319 ![]() |
Ah je crois comprendre en fait... Le mieux ca serait quand même de ne pas ce caler sur la requête SOAP d'exemple, mais sur le WSDL.
Faudrait que tu essaies comme ca : Code :
Sinon pour t'expliquer également, d'après la requête SOAP d'exemple (mais ca serait mieux avec le WSDL), tu ne peux pas caler tout les paramètres à la suite comme tu as fait. C'est structuré tout çà faut bien le faire ^^ Par exemple, je ne mets pas tout c'est un peu long : Code :
En espérant que t'ais compris le principe |
||||
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : septembre 2003 Messages : 597 ![]() |
Un trèèèèèèèès grand merci à toi Guybrush113
ça marche !!! ![]() Effectivement, dans les exemples de connexion à un webservice que j'ai récupéré sur le net, le wsdl est ultra basique donc un simple tableau associatif suffit pour passer les paramètres. J'ai bien tenté quelques trucs avec des tableaux à 2 dimensions mais bien sûr ce n'était pas suffisant. Maintenant j'ai bien pigé le principe et je devrait normalement pas trop mal m'en tirer pour les prochaines connexions. Encore merci. |
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() Développeur Web Inscription : avril 2004 Messages : 319 ![]() |
Mais de rien, content que ca marche !
Bon courage pour la suite |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : août 2008 Messages : 11 ![]() |
super tintin72,
chez moi la fonction __soapcall génère l'erreur Fatal error: Call to undefined function: __soapcall() in (la page et la ligne de la fonction __soapcall()) D'où vient cette erreur svp ? Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com