2015-11-20 13 views
1

J'ai travaillé sur une API pour recevoir un fichier XML qui sera à son tour lu dans notre base de données. L'analyse syntaxique a fonctionné avec des fichiers XML locaux. Maintenant, la dernière étape consistait à vérifier si la réception du XML fonctionnait et où il y avait un barrage routier. J'ai essayé beaucoup de choses différentes jusqu'à présent, mais je n'arrive pas à le faire fonctionner. Nous préférerions travailler avec la méthode REST, mais si ça ne marche vraiment pas, nous sommes prêts à la changer. J'ai vu beaucoup de questions pour envoyer ou recevoir un fichier XML, mais jamais en combinaison. J'espère que je peux obtenir une réponse solide à ce sujet et n'ai pas manqué une question qui est un doublon.PHP envoyer et recevoir XML

TL; DR: Envoi et réception de fichiers XML via PHP, je ne sais pas où je fais une erreur Les parties d'envoi et de réception sont dans des scripts différents. Ce n'est pas la logique complète, mais je pense que ce sont les parties qui comptent, si vous voulez plus de code il suffit de demander.

EDIT:

après quelques modifications et redémarrer mon pc, il a finalement fonctionné. Donc, pas exactement sûr quel changement a résolu le problème, mais publiera le code ci-dessous au cas où quelqu'un pourrait jamais trouver une utilisation pour cela.

//Sending script:  
$ch = curl_init($url);   
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', 
              'Content-length: '.strlen($xml))); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($ch); 

//receiving script 
$xmlTest = file_get_contents("php://input"); 

echo $xmlTest; 
$res = simplexml_load_string($xmlTest); 
if($res === false){ 
    echo "Failed loading XML: "; 
    foreach(libxml_get_errors() as $error){ 
     echo "<br>", $error->message; 
    } 
    return; 
} else { 
    //print_r($res); 
} 
+0

Quelle est l'erreur que vous obtenez? – NaeiKinDus

+0

Il n'a pas donné une erreur, juste les messages que je reçois lorsque le XML est vide. – Kezufru

Répondre

2

Vous devez envoyer le type de contenu que application/xml si votre code deviendra

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', 
              'Content-length: '.strlen($xmlSend))); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlSend); 

et sur le côté réception, vous pouvez utiliser

$xml = file_get_contents("php://input"); 

Pour votre code actuel, vous pouvez définir le contenu -type comme application/x-www-form-urlencoded le vous pouvez utiliser $_POST['recXML']

+0

Je vais y jeter un coup d'œil, je crois que j'ai déjà essayé ces différentes combinaisons quelque part hier, mais j'ai changé tellement de choses à ce moment-là, je n'en suis plus sûr. atleast merci pour la réponse: D – Kezufru

+0

J'ai essayé vos deux suggestions, mais toujours le message qu'aucun XML n'est trouvé. même après avoir supprimé tous les autres $ _REQUEST, isset() etc .. mais la variable XML reste vide – Kezufru

+0

Essayez simplement avec le codec en dur recevez-vous des données. Peut-être en raison de la taille de xml –