requete flux xml avec curl

requete flux xml avec curl - PHP - Programmation

Marsh Posté le 20-06-2008 à 21:31:09    

Bonjour,
 
mon autre post n'ayant plus l'air d'interesser grand monde je reviens poster mon probleme ici.
 
le but : avec curl envoyer une requete xml sur un flux xml et ensuite récuperer cette réponse.
j'ai écumé le net et impossible de faire marcher quoi que ce soit !
 
déjà j'ai trouvé cet exemple de script : http://www.higherpass.com/php/tuto [...] mplexml/1/
qui correspond tout à fait mais comme c'est pas très bien expliqué je vois pas quoi mettre pour les variables request et parameters. donc si quelqu'un comprend mieux que moi, une explication serait sympa.
 
 
voila ce que j'ai fais actuellement :
 

Code :
  1. $requete_xml = '<?xml version="1.0" encoding="UTF-8"?>';
  2. $requete_xml .='<REQUETE>';
  3. $requete_xml .='<DEMANDE_DISPO>';
  4. $requete_xml .='<ENTETE ..."';
  5. $requete_xml .='</REQUETE>';
  6. $useragent="Mozilla/4.0";
  7. $url = "http://91...";
  8. $referer=$url;
  9. $ch = curl_init($url);
  10. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
  11. curl_setopt($ch, CURLOPT_TIMEOUT, 20);
  12. curl_setopt($ch, CURLOPT_POST,1);
  13. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
  14. curl_setopt($ch, CURLOPT_POSTFIELDS, $requete_xml);
  15. curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  16. curl_setopt($ch, CURLOPT_REFERER, $referer);
  17. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  18. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  19. $ret=curl_exec($ch);
  20. if(!$ret) {echo 'out';}
  21. curl_close($ch);
  22. echo $ret;


 
y a forcément un truc qui cloche car ça m'affiche :

Citation :

entrez le paramètre URL nommé xml  
...de la forme: ?xml=<REQUETE><DEMANDE_DISPO>...


 
j'ai essayé plusieurs trucs que j'ai vu sur différents forums mais à chaque fois ça marche pas.
 
voila si quelqu'un peut me venir en aide, ça serait très sympa !
 
merci  :)


Message édité par gosty is back le 21-06-2008 à 14:51:55
Reply

Marsh Posté le 20-06-2008 à 21:31:09   

Reply

Marsh Posté le 21-06-2008 à 13:05:29    

je viens aussi d'essayer une autre technique, toujours sans succès  :(  
 

Code :
  1. <?PHP
  2. $dom = new DOMDocument('1.0', 'UTF-8');
  3. $dom->formatOutput = TRUE;
  4. $requete = $dom->createElement('REQUETE');
  5. $dom->appendChild($requete);
  6. $DEMANDE_DISPO = $dom->createElement('DEMANDE_DISPO');
  7. $requete->appendChild($DEMANDE_DISPO);
  8. $entete = $dom->createElement('ENTETE');
  9. $DEMANDE_DISPO->appendChild($entete);
  10. $entete->setAttribute('IDPART', ...);
  11. ...
  12. $sendXML = $dom->saveXML();
  13. $url = "http://91.";
  14. $ch = curl_init($url);
  15. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
  16. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  17. curl_setopt($ch, CURLOPT_POST,1);
  18. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  19. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  20. curl_setopt($ch, CURLOPT_HEADER, 0);
  21. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
  22. curl_setopt($ch, CURLOPT_POSTFIELDS, $sendXML);
  23. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  24. $ret=curl_exec($ch);
  25. if(!$ret) {echo 'out';}
  26. curl_close($ch);
  27. echo $ret;
  28. ?>


 
cette fois ci je crois que ma requete xml est bonne car elle s'affiche exactement comme le modele de requete xml que je dois emettre. maintenant le pb vient plus de curl j'ai l'impression, j'ai essayé pas mal d'options au niveau des header notamment, y a rien qui marche.
la réponse que je reçois maintenant c'est out, je sais pas alors si c'est le serveur d'en face qui marche pas ou si c'est ma requete qui fait tout foirer.
quelqu'un sait ou ça foire ?
 
merci d'avance

Reply

Marsh Posté le 21-06-2008 à 14:21:46    

Moi ce que je fais dans ce genre de cas, c'est essayer avec un navigateur d'envoyer exactement les meme headers que ceux envoyés par CURL (tu peux contrôler que curl envoie bien ce que tu penses en loggant ton réseau avec un truc genre wireshark .. Si ton navigateur reçoit bien ce que tu attends, c'est que le problème est pas là. Si le navigateur reçoit aussi un timeout, ça peut venir de la config du serveur qui contrôle des trucs style version du navigateur/de l'OS & co pour éviter les bot

Reply

Marsh Posté le 21-06-2008 à 14:56:18    

merci pour ta réponse, malheureusement pas trop capter tout ce que tu voulais dire. je vais aller chercher sur google.
pour curl je pense que mon serveur marche car j'envoi déjà des requetes en post pour soumission de formulaires sur d'autres sites et ça marche.
l'url que je veux requeter est faite spécialement pour ça, elle est du style :
http://91....:8080/frontal/servlet/frontalSrv
en cherchant j'ai vu que servlet c'était du java, je me suis peut etre dit que du coup on pouvait pas interroger la base en passant par du php comme je fais ?
 
merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed