[RESOLU] Unable to parse the specified order data from request body. Unable to parse xml file

Petit nouveau ! | 5 Messages

08 oct. 2015, 15:05

Bonjour,

J'envoie les données en XML à un web service par la méthode POST.
Voici mon code :
$data = '<demande>
				<date>20151008</date>
				<id>852369</id> 
				<campagne>NEWYEAR</campagne>
				<utilisateur>                                                        
					<ville>Montreal</ville>                                                                   
					<province>QC</province>                                                 
				</utilisateur>
			</demande>';
 
$webservices = 'https://webserviceexterne.com/ws/demande/TOTO?appId=qscvhu&pwd=1598753&xml=';	
 
$curl_php = curl_init();
curl_setopt($curl_php, CURLOPT_URL, $webservices);
curl_setopt($curl_php, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_php, CURLOPT_COOKIESESSION, true);
curl_setopt($curl_php, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_php, CURLOPT_SSL_VERIFYHOST, false);
 
curl_setopt($curl_php, CURLOPT_POST, true);
curl_setopt($curl_php, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($curl_php,CURLOPT_POSTFIELDS, "xmlRequest=" . $data);
 
$rep_webservices = curl_exec($curl_php);
 
if(curl_errno($curl_php))
{
    echo 'Erreur : ' . curl_error($curl_php);
}
else
{
	$rep_info = curl_getinfo($curl_php);
 
	print_r($rep_info);
}
 
 print_r($rep_webservices);
 
curl_close($curl_php);
Je reçois le message erreur par
print_r($rep_webservices)
:
Unable to parse the specified order data from request body. Unable to parse xml file
Que je dois faire pour régler ce problème ?


Merci

ViPHP
xTG
ViPHP | 7331 Messages

08 oct. 2015, 15:13

Voir avec le gérant du webservice ce qui ne va pas dans ta requête. ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

08 oct. 2015, 15:16

Bonjour,

Le webservice t'indique qu'il n'arrive pas à lire correctement le XML que tu lui envoie donc il faut chercher de ce côté là.
Demande un XML d'exemple pour vérifier que c'est conforme à ce que tu envoies.

A première vue, je dirai qu'il manque la déclaration XML en 1ère ligne

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?>
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 5 Messages

08 oct. 2015, 17:06

Merci xTG et @rthur,

Je vais le demander à notre fournisseur de webservice

Bonne journée

Petit nouveau ! | 5 Messages

13 oct. 2015, 16:09

Bonjour,
Voici l'erreur : J'ai envoyé 2 fois un champ nonmé xml :
J'ai ajouté dans ma varaible $data :
<?xml version="1.0" encoding="utf-8"?>
J'ai supprimé : CURLOPT_HTTPHEADER et j'ai rectifié 'CURLOPT_POSTFIELDS'
$data = '<?xml version="1.0" encoding="utf-8"?><demande>
        <date>20151008</date>
        <id>852369</id> 
        <campagne>NEWYEAR</campagne>
        <utilisateur>                                                        
          <ville>Montreal</ville>                                                                   
          <province>QC</province>                                                 
        </utilisateur>
      </demande>';
 
//$webservices = 'https://webserviceexterne.com/ws/demande/TOTO?appId=qscvhu&pwd=1598753&xml=';	
$webservices = 'https://webserviceexterne.com/ws/demande/TOTO?appId=qscvhu&pwd=1598753';	
 
$curl_php = curl_init();
curl_setopt($curl_php, CURLOPT_URL, $webservices);
curl_setopt($curl_php, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($curl_php, CURLOPT_COOKIESESSION, true);
curl_setopt($curl_php, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_php, CURLOPT_SSL_VERIFYHOST, false);
 
curl_setopt($curl_php, CURLOPT_POST, true);
//curl_setopt($curl_php, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
//curl_setopt($curl_php,CURLOPT_POSTFIELDS, "xmlRequest=" . $data);
curl_setopt($curl_php,CURLOPT_POSTFIELDS, http_build_query(array('xml' => $data)));
 
$rep_webservices = curl_exec($curl_php);
 
if(curl_errno($curl_php))
{
    echo 'Erreur : ' . curl_error($curl_php);
}
else
{
  $rep_info = curl_getinfo($curl_php);
 
  print_r($rep_info);
}
 
 print_r($rep_webservices);
 
curl_close($curl_php);
Et ça marche