IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Web Service][SOAP] génération WSDl à la volée par PHP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut [Web Service][SOAP] génération WSDl à la volée par PHP
    Hello,

    J'ai un web service PHP 5 qui fonctionne nickel en loadant un fichier.wsdl se trouvant dans le même répertoire.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $server = new SoapServer('.fichier.wsdl',  array('trace' => 1, 'soap_version' => SOAP_1_1));
    Le problème est que dans mon WSDL, l'url d'accès au webservice est en dur :
    Extrait de mon fichier.wsdl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <service name="WebServiceKaboume">
        <documentation>version 1.0</documentation>
        <port name="KABOUME_Port" binding="tns:KABOUME_Binding">    	
        	<soap:address location="http://localhost/webservice/webService.php"/>
        </port> 
     </service>
    Quand je passe ce code sur une machine de production, cela ne fonctionne plus car l'url dans soap:adress n'est plus la même (nom de domaine change et surtout l'arborescence n'est pas la même).

    Donc j'ai pensé généré le WSDL à la volée par PHP à partir d'un template de wsdl. A la volée PHP remplacerait l'URL de soap:address par la bonne URL récupérée via une fonction de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    	public static function get_url($bShowFileName = true,$bShowQueryString = true,$bShowPort = false)
    	{
    	    if(isset($_SERVER['HTTPS']))
    	    	{$sUrl = 'https://';}
    	    else
    	    	{$sUrl = 'http://';}
     
    	    $sUrl .= $_SERVER['HTTP_HOST'];
     
    	    if($bShowPort)
    	    	{$sUrl .= ':' . $_SERVER['SERVER_PORT'];}
     
    		if ($bShowFileName)	
    	    	{$sUrl .= $_SERVER['SCRIPT_NAME'];}
    		else 
    			{$sUrl .= dirname($_SERVER['SCRIPT_NAME'])."/";}
     
    	    if( ($_SERVER['QUERY_STRING'] != null) && ($bShowQueryString) )
    	    	{$sUrl .= '?' . $_SERVER['QUERY_STRING'];}
     
    	    return $sUrl;
    	}
    Le problème est l'instanciation su serveur soap se fait à partir d'un fichier physique ($server = new SoapServer('.fichier.wsdl',) donc comment faire en sorte pour qu'il pointe vers le template wsdl modifié à la volée ?

    Qu'en pensez-vous ? Avez-vous déjà rencontré cette problématique ?

    kaboume.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Moi j'ai toujours changé à la main l'adresse, quand je place sur une autre machine le WebService.

    Sinon pour répondre à ta question, si je l'ai bien comprise... Il faudrait juste que tu créées ou modifie ton fichier WSDL à chaque appel du serveur, enfin avant chaque instanciation du serveur SOAP.
    Tu vas vraiment mettre ton webservice sur beaucoup de machines ? C'est pas plus simple d'écrire en dur l'adresse dans le WSDL ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    Hello,

    Merci de ta réponse.

    Le problèmes est que je vais gérer des dizaines de web service de ce type là. Je ne me vois pas me palucher les dizaines de WSDL pour changer leur adresse.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Le truc que j'ai du mal à comprendre c'est qu'il ne faut pas que tu modifie ton fichier WSDL à chaque fois que quelque chose appele ton WebService, sinon ca fait du travail en plus inutile. Sauf si évidemment, si quelqu'un s'amuse à déplacer tes fichiers sur le serveur... Ce qui est assez idiot.

    Donc à l'installation du serveur sur une nouvelle machine, lancer un petit travail php ou modification directe à la main dans le fichier WSDL ?
    Ca dépends des gouts apparemment

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    ouai je suis d'accord avec toi sur le fait de modifier à chaque fois le fichier. Mais de toute façon, le soap lit à chaque fois le fichier donc une fois qu'il l'a lu, je voudrai le modifier en mémoire...

    Je vais ptete faire un script de déploiement.

    C con, parceque dans les autres langages comme .net et java, le wsdl est généré à la volée, pas obligé de lire le fichier wsdl comme en php.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Ouais mais si t'as mal fait ton code .net ou java, ca te sort un WSDL en carton bancal, qui du coup change l'interopérabilité.
    J'ai bien vu ca, j'ai fait un webservice avec un autre gars qui était en .net, il ne pouvait pas changer son fichier WSDL directement, obligé de changer le code...
    Donc bon je trouve çà un peu bizarre

Discussions similaires

  1. [XL-2007] Web Service SOAP Fichier WSDL / Extraction des données dans un classeur
    Par crusaders dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/12/2014, 12h05
  2. web service soap par ou commencer
    Par diengkals dans le forum SOA
    Réponses: 3
    Dernier message: 26/06/2013, 12h51
  3. GWT et WSDL (web services SOAP)
    Par M4v3rick dans le forum GWT et Vaadin
    Réponses: 0
    Dernier message: 09/12/2010, 10h29
  4. [Web Service] Web Service SOAP : Accès au WSDL
    Par gui38 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 02/03/2010, 16h15
  5. [PHP 5.4] Web Service, SOAP et WSDL
    Par jimmypage dans le forum Langage
    Réponses: 10
    Dernier message: 08/02/2010, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo