[Resolu] Problème de récupération d'un fichier résultat de POST (API)

Problème de récupération d'un fichier résultat de POST (API) [Resolu] - PHP - Programmation

Marsh Posté le 22-01-2010 à 10:14:32    

Bonjour,
 
Voici mon code :

Code :
  1. $serveur = 'www.monurl.com';
  2. $script = '/dir/traitement.php';
  3. $fp = fsockopen($serveur, 80, $errno, $errstr, 30); // Ouverture d'une connexion sur le port 80 du serveur
  4. if (!$fp){
  5.     echo 'et non!';
  6. }else{
  7. $data = 'login='.urlencode($login).'&pass='.urlencode($pass);
  8. if(count($vars) > 0){
  9.  foreach($vars as $cle=>$value){
  10.   $data .= '&'.$cle.'='.urlencode($value);
  11.  }
  12. }
  13. $envoi  = "POST $script HTTP/1.1\r\n";
  14. $envoi .= "Host: $serveur\r\n";
  15. $envoi .= "Connection: Close\r\n";
  16. $envoi .= "Content-type: application/x-www-form-urlencoded\r\n";
  17. $envoi .= "Content-Length: ".strlen($data)."\r\n\r\n";
  18. $envoi .= $data."\r\n";
  19. $retour = "";
  20. fwrite($fp, $envoi);
  21. while (!feof($fp)) {
  22.  $retour .= fgets($fp, 4096);
  23. }
  24. fclose($fp);
  25. return $retour;
  26. }


 
Ca me retourne un fichier XML, et mon souci est que lorsque je fais une requete pour récupérer 5 lignes de resultats, ca marche sans souci, mais lorsqu'il y a plus de résultat, j'ai un 0 qui se glisse en fin de page de resultat...
 
exemple :

Code :
  1. [...]
  2. <element>
  3. <id>345260</id>
  4. <date><![CDATA[04-04-2010]]></date>
  5. <date_fin><![CDATA[04-04-2010]]></date_fin>
  6. <nom><![CDATA[Meaux]]></nom>
  7. </element>
  8. <element>
  9. <id>345261</id>
  10. <date><![CDATA[10-04-2010]]></date>
  11. <date_fin><![CDATA[10-04-2010]]></date_fin>
  12. <nom><![CDATA[Meaux]]></nom>
  13. </element>
  14. </reponse>
  15. 0


 
Coté serveur intérrogé il n'y a pas de souci, le problème vient donc de l'interprétation de la réponse.. (feof, fgets...)
 
Une idée ? Merci !!


Message édité par zazerty le 22-01-2010 à 15:46:47
Reply

Marsh Posté le 22-01-2010 à 10:14:32   

Reply

Marsh Posté le 22-01-2010 à 15:46:30    

Finalement en passant par cURL ca marche !
 

Code :
  1. $data = 'login='.urlencode($login).'&pass='.urlencode($pass);
  2. if(count($vars) > 0)
  3. {
  4.  foreach($vars as $cle=>$value)
  5.  {
  6.   $data .= '&'.$cle.'='.urlencode($value);
  7.  }
  8. }
  9. $curl = curl_init();
  10. curl_setopt($curl, CURLOPT_URL, $serveur.$script);
  11. curl_setopt($curl, CURLOPT_POST, 1);
  12. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  13. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  14. $page = curl_exec($curl);
  15. curl_close($curl);
  16. return $page;

Reply

Sujets relatifs:

Leave a Replay

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