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

Langage PHP Discussion :

XML : <erreur> Le Content type doit etre : text/xml </erreur> avec CURL et PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut XML : <erreur> Le Content type doit etre : text/xml </erreur> avec CURL et PHP
    Bonjour a tous, je suis en train de créer un fichier PHP qui va générer un fichier xml qui sera enfin envoyé sur un serveur distant.

    Le pb que je rencontre c'est que je reçois la réponse suivante :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <html>
    <head>
    </head>
    <body>
    <a href="http://www.xxxxx.fr/export_DUPONT_Olivier_1.xml" target="_blank"> Voir fichier</a>
    <validation_serveur>
    <erreur>
    Le Content type doit etre : text/xml
    </erreur>
    </validation_serveur>
    </body></html>




    j'ai beau chercher sur gg il semblerait qu'il faille rajouter le header content, mais quelque soit l'endroit ou je le mets ça ne marche pas , si vous pouviez s'il vous plait m'aider, voici mon code :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
      <?php
    session_start();
    include ('config.php');
    $id=@$_GET['id'];
    header("Content-Type: text/xml");
    header("Cache-Control: no-cache, must-revalidate");
     
        $result_table= mysql_query("SELECT * FROM tablewhere id='$id'");
        $num_table = mysql_num_rows($result_table);
    	if ($num_table != 0) {
     
    	   while ($row = mysql_fetch_array($result_table)) {
           $file= fopen("export_$row[nom_e]_$row[prenom_e]_$row[id].xml", "w");
    	   $_xml ="<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    	   $_xml .="";
     
    $_xml .="<DOSSIER>
    	..... toutes les balises ....
    </DOSSIER>";
     echo '<html>
    <head>
    </head>
    <body>
    <a href="http://'. $url_index.'/export_'.$row["nom_e"].'_'.$row["prenom_e"].'_'.$row["id"].'.xml" target="_blank"> Voir fichier xml </a>
    ';
     
    $nom_xml=$row["nom_e"].'_'.$row["prenom_e"].'_'.$row["id"];
    //	   $_xml .="header('Content-Type: text/xml')"; 
          }
      	  	// echo $_xml;
    		fwrite($file, $_xml);
            fclose($file);
      /*
       * XML Sender/Client.
       */
      $file = 'http://'. $url_index.'/export_'.$nom_xml.'.xml';
      if(!$xml_builder = simplexml_load_file($file))
      exit('Failed to open '.$file);
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, "https://urlduserveur");
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_builder);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
      curl_setopt($ch, CURLOPT_REFERER, 'https://urlduserveur');
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      $ch_result = curl_exec($ch);
      curl_close($ch);
      // Print CURL result.
      echo $ch_result;
     
        }
    echo '</body></html>';
    ?>
    Merci milles fois de votre aide
    olivier

  2. #2
    Membre confirmé Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Par défaut
    Bonjour,

    En activant l'option cURL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    Tu récupères dans $ch_result la réponse de ton serveur à ton appel cURL.

    Lorsque tu fais ton echo $ch_result tu imprimes dans ton code html la réponse du serveur qui est :

    <validation_serveur>
    <erreur>
    Le Content type doit etre : text/xml
    </erreur>
    </validation_serveur>
    tu peux donc enlever

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-Type: text/xml");
    Tout en haut de ton code et va voir du côté de ton script côté serveur (celui que tu appelle avec cURL, c'est lui qui te renvoie cette erreur à mon avis.

    Pour en être sûr fait lui renvoyer un coucou tout simple et tu verras que ça devrait marcher.

    Si tu ne t'en sors toujours pas essaye de poster ici le script que tu appelles avec ta requête cURL.

    Bonne journée

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Merci Alejandro pour cette première réponse,

    J'ai supprimé le header,

    je n'ai plus l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <validation_serveur>
    <erreur>
    Le Content type doit etre : text/xml
    </erreur>
    </validation_serveur>
    mais j'ai ça qui apparait :
    Voir fichier xml

    Le Content type doit etre : text/xml

  4. #4
    Membre confirmé Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Par défaut
    Rebonjour,

    Au début du script que tu appelles avec cURL pour pousser ton fichier xml sur le serveur, essaye de mettre qq chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'hello world'; exit;
    Normalement ton message d'erreur risque de devenir : hello world

    Tiens moi au courant

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Exact dorénavant j'ai :

    Voir fichier xml

    hello world

    Que dois je comprendre ?

  6. #6
    Membre confirmé Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Par défaut


    Que c'est ton script côté autre serveur qui marche pas, tu devrais essayer de dumper tes entêtes de requête pour voir si ton champ content-type text/xml y apparait bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    header('content-type: text/plain');
    var_dump(getallheaders());
    exit;
    Tu met ça à la place de ton hello world.

    Tu envoie cette en-tête dans ta requête cURL quand tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));

Discussions similaires

  1. [POI] Erreur "Package should contain a content type part [M1.13]"
    Par mouss4rs dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/07/2014, 19h45
  2. [SimpleXML] Erreur LibXml "Extra content at the end of the document" malgré XML valide
    Par saintbios dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 26/07/2012, 14h57
  3. Réponses: 6
    Dernier message: 24/11/2010, 22h56
  4. parser une reponse xml avec content-type="text/html"
    Par roro06 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 15/10/2010, 11h30
  5. Réponses: 6
    Dernier message: 13/01/2010, 17h29

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