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] SoapServer %u2013 obtenir la réponse XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 8
    Points
    8
    Par défaut [Web Service] SoapServer %u2013 obtenir la réponse XML
    Bonjour,

    Tout est dans le titre, je n’arrive pas à intercepter/obtenir la réponse XML effectuée par SoapServer.
    Pour le contexte, j’ai implémenté un jeu de WS avec PHP 5.5 et en utilisant SoapServer. J’ai maintenant besoin de positionner des logs complets avec entre autre la requête reçue par le WS ainsi que la réponse faite, le tout au format XML (logs en base que je dois exploiter, ce que me permet le XML).
    Pour la requête pas de problème, on sait récupérer les données brutes en dehors de la classe SoapServer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (! isset ( $GLOBALS ['HTTP_RAW_POST_DATA'] )) {
    $GLOBALS ['HTTP_RAW_POST_DATA'] = file_get_contents ( 'php://input' );
    }
    $maRequeteXML = $GLOBALS ['HTTP_RAW_POST_DATA'];
    Pour la réponse en revanche SoapServer comme PHP ne propose aucune méthode pour la récupérer (d’après mes recherches, je serai heureux d’être détrompé ! ).
    Je précise ici que ma réponse est une répétition de la requête enrichie par certaines valeurs (j’applique une norme). Je reprends donc l’objet requête construit pas SoapServer que j’enrichie puis retourne. J’amène cette précisions pour dire que cet objet est beaucoup trop complexe pour que des librairies/classes utilisateurs de types ArrayToXML, ObjectToXML me permettent de reproduire le XML de la réponse SOAP.

    J’ai également regardé des solutions de débogage (type http://blog.mayflower.de/179-Extendi...debugging.html) qui permettent d’intercepter la réponse. Ces solutions sont impropres à la production et ne permettent pas le retour du WS.
    Je suis assez étonné qu’Apache/PHP ne permettent pas de loguer ce type d’échanges http de façon complète, même les traces Apache ne permettent pas « à priori » de voir les requêtes / réponses complètes des WS lorsque l’on est serveur.

    Avez-vous déjà été confronté à cette problématique ? Comment gérez-vous les logs ? Comment faites-vous dans un environnement de production pour avoir la certitude que vos WS sont consommés comme attendu ? Je pense que j’ai dû rater quelque chose mais je ne trouve pas.

    Cordialement,
    Antoine

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Re bonjour,

    Ce manque de réponse ne me dit rien qui vaille .
    Afin de respecter les délais de mon projet j’ai appliqué une solution particulièrement inélégante.

    J’ai pris mon wsdl intial (WS1 pour la suite) et créé un nouveau jeu de WS accessible uniquement en local (WS2 pour la suite).
    Ce nouveau wsdl présente une inversion de la réponse en requête et une réponse vide (je retourne un int 1).
    Je peux donc appeler depuis WS1 le nouveau WS2 en lui passant l’objet qui sera la réponse de mon WS1 ; je n’ai alors plus qu’à récupérer le __getLastRequest en SoapClient dans WS1 pour avoir le XML qui sera généré en réponse (de WS1).

    Bref, sauf solution propre ce projet sera à réécrire (avec Java Spring par exemple). Je suis quand même déçu de la pauvreté des fonctionnalités Web Service (le client reste très bien) et XML offertes par PHP.

    A+
    Antoine

Discussions similaires

  1. Web service SOAP : Formatage de la réponse XML
    Par casawi dans le forum Services Web
    Réponses: 1
    Dernier message: 04/06/2017, 19h28
  2. [Web Service] Utilisation de PHP / SOAP / WSDL / XML
    Par soufian2290 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 23/01/2013, 15h10
  3. [Web Service] Erreur sur envoie du flux XML
    Par paradeofphp dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 09/12/2010, 13h21
  4. [Web Service][NuSOAP] Erreur de parsing du XML
    Par binouzzz19 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 28/02/2008, 15h31
  5. [Web Service][SOAP] C'est SOAP ou XML-RPC le plus mieux ?
    Par El Riiico dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/07/2006, 12h45

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