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 :

[XML] Réponse à la requête POST VIA XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 41
    Points : 14
    Points
    14
    Par défaut [XML] Réponse à la requête POST VIA XML
    Bonjour,

    Je développe un serveur en PHP qui, lorsqu'il est appelé via une requête HTTP de type POST, récupère celle-ci sur l'entrée standard ainsi que le fichier XML contenu dans son corps.

    Bon, jusque là tout va bien.

    Le serveur est également chargé de renvoyer sur la sortie standard la réponse à la requête, sous forme de fichier XML également.

    Le problème que je n'arrive pas à résoudre est le suivant : lorsque je renvoie la réponse, le client reçoit bien le même fichier XML que celui que je veux envoyer, mais il est précédé de 3 caractères en début de chaîne qui sont une source d'erreur et que je n'arrive pas à enlever. Je ne sais même pas d'où ils viennent!

    Voici la réponse que j'envoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?xml version="1.0" encoding="UTF-8"?>
    <CSRP_ENVELOPPE xmlns="urn:x-csrp:fr.csrp.protocole:enveloppe" Nature_Action="REP_EMISSION" Version_Protocole="1.0.0.0" Id_Logiciel="WinPharma" Usage="P" Version_Logiciel="5.3.33">
    <ENTETE>
    <EMETTEUR Nature="RE" Adresse="NEPENTHES" Code="00" Id="00" />
    <RECEPTEUR Nature="OF" Id="1391002CAC" Adresse="RUE DE MOSCOW  12345 MOSCOU" />
    <REF_MESSAGE>ER8S60000022</REF_MESSAGE>
    <EN_REPONSE_A>7D6010C0C305379</EN_REPONSE_A>
    </ENTETE>
    <CORPS>
    <ERREUR Description_libre="Votre commande est integree mais pas encore allouee"/>
    </CORPS>
    </CSRP_ENVELOPPE/>


    Et voici ce que le client reçoit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?xml version="1.0" encoding="UTF-8"?>
    <CSRP_ENVELOPPE xmlns="urn:x-csrp:fr.csrp.protocole:enveloppe" Nature_Action="REP_EMISSION" Version_Protocole="1.0.0.0" Id_Logiciel="WinPharma" Usage="P" Version_Logiciel="5.3.33">
    <ENTETE>
    <EMETTEUR Nature="RE" Adresse="NEPENTHES" Code="00" Id="00" />
    <RECEPTEUR Nature="OF" Id="1391002CAC" Adresse="RUE DE MOSCOW  12345 MOSCOU" />
    <REF_MESSAGE>ER8S60000022</REF_MESSAGE>
    <EN_REPONSE_A>7D6010C0C305379</EN_REPONSE_A>
    </ENTETE>
    <CORPS>
    <ERREUR Description_libre="Votre commande est integree mais pas encore allouee"/>
    </CORPS>
    </CSRP_ENVELOPPE/>
    Je me suis dit que cette erreur est peut-être connue, en tout cas si quelqu'un a une idée qu'il le fasse savoir!

    Merci d'avance.

  2. #2
    Membre averti
    Avatar de ghostdogpr
    Étudiant
    Inscrit en
    Octobre 2003
    Messages
    198
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2003
    Messages : 198
    Points : 354
    Points
    354
    Par défaut
    Ca ne me dit rien..

    On peut voir le code PHP qui correspond ?

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 41
    Points : 14
    Points
    14
    Par défaut
    Oui, voici le code correspondant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    include("traitement.php");
     
    $request = file_get_contents("php://input");
    $reponse = file_get_contents(traitement($request));
     
    echo $reponse;
    ?>

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 41
    Points : 14
    Points
    14
    Par défaut
    Bon, j'ai une piste.

    J'ai remarqué que si le traitement est immédiat (< 1sec) , je ne rencontre pas ce pb de caractères en début de fichier.

    Par contre si le traitement est long je retrouve ce pb a chaque fois.

    Je trouve ça très étonnant... le flux envoyé dépendrait donc du temps de traitement du serveur??? Peut-être est-ce un problème de timeout? A vrai dire je n'en sais rien et c'est pourquoi je me tourne vers vous...

    Merci de vos réponses!

  5. #5
    Membre averti
    Avatar de ghostdogpr
    Étudiant
    Inscrit en
    Octobre 2003
    Messages
    198
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2003
    Messages : 198
    Points : 354
    Points
    354
    Par défaut
    On peut voir ce qui se passe dans traitement() ?

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 090
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 090
    Points : 8 188
    Points
    8 188
    Billets dans le blog
    17
    Par défaut
    La réponse ne serait pas en UTF ? Dans ce cas les octets de trop en tête pourraient être le BOM http://www.unicode.org/faq/utf_bom.html#BOM
    Par contre c'est bizarre cette histoire de temp de réponse
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 41
    Points : 14
    Points
    14
    Par défaut
    Le traitement est trop long pour le montrer, et de ttes facons il s'agit bien du BOM spécifique à la norme UTF-8, merci pour cette indication précieuse Séb.

    Par contre je ne sais pas comment régler le problème car je ne comprends toujours pas pourquoi ce BOM dépend du temps de réponse du serveur...

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 090
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 090
    Points : 8 188
    Points
    8 188
    Billets dans le blog
    17
    Par défaut
    Tu dois te gourrer qque part. Je ne vois pas pourquoi le BOM serait envoyé ou non selon le temps de traitement.
    Pourquoi as-tu des temps de traitement différents ? Peut-être as-tu des sources de données différentes ? Fichiers dans certains cas, BdD dans d'autres, etc. que sais-je...
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 41
    Points : 14
    Points
    14
    Par défaut
    Bon, je vais décrire un peu mon projet.

    En gros, mon serveur analyse le fichier XML reçu, récupère les informations importantes et écrit un fichier d'importation sur le serveur du logiciel ERP de l'entreprise.

    Ensuite, un batch écrit en java attend en boucle le fichier de retour d'importation puis redonne la main à PHP qui génère un fichier XML de retour qu'il renvoit sur la sortie standard.

    Le problème est que le temps de traitement d'importation du logiciel ERP est très important (en ce moment > 20sec), ce qui a l'air de poser des problèmes.

    En effet, j'ai essayé de changer mon serveur pour qu'il ne s'occupe que de la partie concernant le renvoi du retour XML et je n'ai plus ce problème... j'en ai déduit que la seul différence entre ces configurations vient du temps de réponse du serveur, mais je reconnais que ça ne paraît pas très logique!

    Bref, à l'aide!! lol

  10. #10
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 090
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 090
    Points : 8 188
    Points
    8 188
    Billets dans le blog
    17
    Par défaut
    As-tu vérifié les valeurs des octets de trop ? Correspondent-ils bien à celles du BOM ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 41
    Points : 14
    Points
    14
    Par défaut
    Oui, les octets correspondent au BOM...

Discussions similaires

  1. Requête Post via HTTP
    Par bm1990 dans le forum Débuter
    Réponses: 3
    Dernier message: 12/02/2019, 03h07
  2. lien avec XML en Post via un formulaire
    Par epeichette dans le forum Langage
    Réponses: 1
    Dernier message: 19/11/2009, 22h32
  3. Requête Access via PHP/XML
    Par saipas dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 06/07/2009, 03h26
  4. [Socket] Réponse à la requête POST
    Par cilv1 dans le forum Langage
    Réponses: 4
    Dernier message: 20/10/2005, 18h18
  5. Comment envoyer une requête POST via HTTP ?
    Par pdtor dans le forum C++
    Réponses: 2
    Dernier message: 13/09/2005, 05h54

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