JeuWeb - Crée ton jeu par navigateur
Aide Curl et méthode http - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Aide Curl et méthode http (/showthread.php?tid=4454)



Aide Curl et méthode http - DragonMaster - 21-11-2009

Salut, beaucoup d'entre vous savent que je travaille sur un service RESTfull mais php ne l'étant pas à la base, je me heurt à quelques difficultés que je dois résoudre d'ici la fin de la journée.

En fait en théorie mon service fonctionne très bien, je n'arrive simplement pas à le tester avec de vraies requete HTTP. Bon pour le get c'est très simple, suffit de demander une page avec sont lien. Mais pour POST et PUT par exemple je n'arrive pas à entrer le corps de la requête.

Voici un bout de code qui va vous éclairer:
Code PHP :
<?php 
//On vérifie toutes les variables
$method = new Securite($_SERVER['REQUEST_METHOD']);
$method = $method->getChaine();
$URI = new Securite($_SERVER['REQUEST_URI']);
$URI = $URI->getChaine();
$Content= new Securite($_SERVER['QUERY_STRING']);
$Content= $Content->getChaine();
$gestionnaire = new GestionProjet($URI, $Content);

switch(
$method)
{
case
'POST':$code=$gestionnaire->nouveauProjet();
$code->getHTMLValideError();
break;
case
'PUT': $code=$gestionnaire->updateProjet();
$code->getHTMLValideError();
break;
case
'GET': $code=$gestionnaire->getProjet();
$code->getHTMLValideError();
break;
case
'DELETE':$code=$gestionnaire->deleteProjet();
$code->getHTMLValideError();
break;
}
?>

En gros je dois insérer dans QUERY_STRING l'adresse de l'image pour POST et PUT...J'utilise Curl de cette manière, mais je vois très bien que mon contenu ne va pas au bon endroit:

Code PHP :
<?php 
$rCurl
= curl_init();
curl_setopt ($rCurl, CURLOPT_URL, "http://sunensweb.uqac.ca/~ex18004/acespce/monprojet");
curl_setopt ($rCurl, CURLOPT_HEADER, false);
curl_setopt ($rCurl, CURLOPT_POST, true);
curl_setopt ($rCurl, CURLOPT_POSTFIELDS, 'http://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Petite_couronne.png/120px-Petite_couronne.png');
curl_setopt ($rCurl, CURLOPT_RETURNTRANSFER, true);
$iResult = curl_exec ($rCurl);
curl_close ($rCurl);
echo
'<p>Valeur retournée : ', $iResult, '</p>';

Bon je pense que je vais couper la solution au plus court avec $_POST pour récupérer mes données PUT et POST. Parcontre si quelqu'un voit mieux...faite le savoir.


RE: Aide Curl et méthode http - DragonMaster - 21-11-2009

Bon je me parle seul mais c'est pour que vous suiviez la progression Tongue. Comme je pensais impossible d'utiliser $_POST pour PUT. Parcontre j'ai trouvé comment faire un PUT avec Curl...le problème est que je ne sais pas ou vont les données. Je les envoi avec:
CURLOPT_INFILE
Je suis vraiment trop fort...j'ai fini par y arriver :wowowow:. Pour ceux que sa intéresse pour faire une requête PUT:
Code PHP :
<?php 
$putString
= "http://sunensweb.uqac.ca/~ex18004/img/brazil.png";
$putData = tmpfile();
fwrite($putData, $putString);
fseek($putData, 0);

$rCurl = curl_init();
curl_setopt ($rCurl, CURLOPT_URL, "http://sunensweb.uqac.ca/~ex18004/acespce/monprojet");
curl_setopt ($rCurl, CURLOPT_PUT, true);
curl_setopt($rCurl, CURLOPT_INFILE, $putData);
curl_setopt($rCurl, CURLOPT_INFILESIZE, strlen($putString));
curl_setopt ($rCurl, CURLOPT_RETURNTRANSFER, true);
$iResult = curl_exec ($rCurl);
fclose($putData);
curl_close($rCurl);
echo
$iResult;

Et pour la récupérer:
Code PHP :
<?php 
$Content
= file_get_contents("php://input");