|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 5 ![]() |
Bonjour,
débutant en Webservices avec php, je suis amené dans mon projet à développer un client soap en php. La partie serveur étant une "boite noire", je ne dispose que de l'url du fichier wsdl. La récupération des types et fonctions possibles du coté serveur se trouvent ici : (Résultat du code php) Citation:
La ou je coince c'est que pour appeller ces fonctions je dois m'authentifier à l'application via la classe SoapHeader. Malgré la création d'une instance de soapHeader, l'appel de la fonction me requiert toujours l'authentification. Voici la norme requise pour la création de l'header correcte fourni par la documentation coté serveur. Citation:
Pour info : je n'utilise pas nusoap mais l'extention de php 5 Voici le code coté client : Code :
Le résultat de l'appel de la fonction me retourne exeption soaph : SoapFault exception: [SOAP-ENV:Server] The user is not authenticated. De plus, pourriez vous me dire pourquoi j'ai une représentation de mon code source PHP le tout en commentaire visible sur le navigateur lors de la création de l'header c'est à dire à cette ligne : $headerSOAP=new SoapHeader("....",$params['Username'],$params['Password']) ; Merci d'avance pour votre aide. Au cas où, il faut fournir le wsdl , je peux le poster |
||||
|
|
00
|
|
|
#2 | ||
|
Membre éclairé
![]() Développeur Web Inscription : avril 2004 Messages : 319 ![]() |
Salut à toi.
Je n'ai jamais utilisé l'authentification, ni de SoapHeaders, donc je ne vais pas être d'une grande aide désolé. Déjà la fonction __setSoapHeaders n'est pas documentée sur http://fr.php.net/manual/fr/ref.soap.php. Es-tu sûr qu'elle soit entiérement fonctionnelle ? Tu pourrais tenter comme dans l'exemple : Code :
Et tu peux poster le wsdl ca serait bien oui, enfin surtout la définition de la méthode que tu as indiqué dans ton exemple. |
||
|
|
00
|
|
|
#3 | ||||||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 5 ![]() |
Salut Guybrush113,
En effet, après recherches dans des bouquins cette fonction ne fait pas partie de la bibliothèque PHP.(héritage du c++ Comme le mentionnait le livre : la classe SOAPHEADER peut être utilisée directement dans la méthode SoapClient->__soapCall() pour passer un entête SOAP Soapheader ne contient qu'une seule méthode son constructeur Voici donc le code modifié mais malheureusement avec la même erreur. Code :
l'erreur : Code :
Voici le wsdl : Code :
pour info : Pour le problème du double code c'était un soucis du cache . Mais pour ce qu'il y autour j'ai fait plusieurs tests. Par exemple : un mauvais appel de la méthode GetOBJECTS cela me représente correctement l' erreur :<quote>exeption soapheader : SoapFault exception: [Client] Function ("getObjcts") is not a valid method for this service in ....</quote> De plus, mes variables de php.ini sont : display_errors = On error_reporting = E_ALL Pour ma part ce qu'il y a autour semble correct, maintenant si tu as d'autres suggestions je suis tout ouï. Merci à toi |
||||||
|
|
00
|
|
|
#4 | ||
|
Membre éclairé
![]() Développeur Web Inscription : avril 2004 Messages : 319 ![]() |
Ce qui me perturbe un peu avec ce SoapHeader, c'est qu'a mon avis tu ne dois pas balancer juste les valeurs de ton login et mot de passe.
Je pense qu'il faut faire comme l'appel des méthodes en plaçant les paramètres dans un tableau. Essaie peut-être de faire comme dans les exemples à cette page : http://fr.php.net/manual/fr/function...-construct.php Code :
Sinon pour le WSDL : Il manque cette partie ^^ Il doit y avoir la définition des méthodes et leur paramètres, et avec le Header également je pense. Bon courage ! |
||
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 5 ![]() |
Salut
Voici le fichier FNCEWS35.wsdl Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 5 ![]() |
Voici la suite :
Code :
Bàt |
||
|
|
00
|
|
|
#7 | |||||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 5 ![]() |
Re-
![]() pour info, j'avais déjà passé les paramètres via un tableau mais cela reviens au même. J'ai fais d'autres tests selon la description de la méthode mais le résultat est identique. Code :
Par contre dans le fichier wsdl on peut constater ceci : et j'ai pu constater dans un livre que j'ai lu qu'il existe une implementation de la classe Localization pour les soapheader. <!-- ***Localization header*** --> <xsd:element name="Localization"> <xsd:complexType> <xsd:sequence> <xsd:element name="Locale" type="xsd:string"/> <xsd:element name="Timezone" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> j'ai testé un appel de ce style : Code :
Citation:
|
|||||
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Développeur Web Inscription : avril 2004 Messages : 319 ![]() |
Désolé je ne sais pas du tout
Mais ca me parait bizarre tout de même que l'authentification dépende de la localisation. |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : avril 2002 Messages : 44 ![]() |
As-tu essayé d'utiliser TCPMon afin de vérifier la tête de ton message SOAP ?
Tu pourras ainsi vérifier que ton SOAPHeader est correctement fabriqué.
__________________
www.ferraridefrance.com - www.autoccaz.com DELPHI 4-5-6-7, PHP 4, VB 4-5-6, J2EE, ADA, C++, SIEBEL 7, COBOL... DB2 OS/390, Access... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com