IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[cURL] requête POST


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut [cURL] requête POST
    Bonjour,

    Je suis entrain d'effectuer une requête post avec curl. Toutes les données de mon formulaire sont correct et lorsque je valide l'envoie de ma requête je récupère ce message erreur :

    Length Required

    du coup j'ai rajouté pour ma requête curl la fonction CURLOPT_HTTPHEADER pour définir dans une entête le content-lenght mais ça ne fonctionne toujours pas
    est-ce que quelqu'un aurait une idée à me soumettre pour régler ce problème ????

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    $header = array();
    $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,**/*;q=0.5";
    $header[] = "Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3";
    $header[] = "Accept-Encoding: gzip,deflate";
    $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $header[] = "Keep-Alive: 300";
    $header[] = "Connection: keep-alive";
    $header[] = "Content-Length: 400";
     
    //url de la page de soumission
    $url = "http://www....";
    $useragent = "Mozilla/5.0";
    $referer = "http://www....\r\n";
     
    //Initialise une session CURL
    $ch = curl_init($url);
    //CURL options
    //on défini les entetes de la requete http
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    //On poste les données du tableau $postfields
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
    //On définit un useragent ici Mozilla/5.0
    //souvent les bots se font passés pour googlebot ce qui finalement est stupide
    //On passe donc un useragent banal
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
    //On passe un referrer ici on passe la même page $url
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    //on récupère le contenu de la page de résultat de la soumission dans une chaine
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     
    //Page de résultats et fermeture de session
    $result = curl_exec($ch);
    curl_close($ch);
     
    //on peut faire un echo du résultat obtenu
    echo $result;
    En faite que je mette ou pas mon header cela revient au même, j'ai toujours la même erreur donc soit je me suis trompé dans mes appellations soit ben je n'en sait rien

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut Requete http
    Alors personne ne peut m'aider je dois juste valider le formulaire d'un site a distance et pour sa je fais une requete http avec curl mais jai d'abord comme probleme mon referer qui n'etait pas bon est-ce que sa change beaucoup de chose que je ne mette pas \r\n a la fin de mon referer ???

    Merci pour votre aide

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Pas besoin de mettre normalement les \r\n au niveau du referer.

    Et votre code est incomplet (il manque toute la partie données POST, qu'il serait vraiment intéressante d'avoir). Il me semble aussi que l'entête Content-Length est gérée par cURL donc vous pouvez lui laisser le soin de s'en occuper pour vous.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    voici mon code entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
    	$postfields = array();
    	$postfields["action"] = "...";
    	$postfields["RoutePost"] =  "...";
    	$postfields["hidRoute1"] =  "...";
    	$postfields["hidRoute2"] =  "...";
    	$postfields["hidRoute3"] =  "...";
    	$postfields["hidRoute4"] =  "...";
    	$postfields["hidNoPax"] =  "...";
    	$postfields["hidCurrency"] =  "...";
    	$postfields["hidHomeURL"] =  "...";
    	$postfields["TripType"] =  "...";
    	$postfields["hidReferComp"] =  "...";
    	$postfields["Route1"] =  "...";
    	$postfields["Route2"] =  "...";
    	$postfields["NoPax"] =  "...";
     
    	$headers = array();	
    	$headers[0] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
    	$headers[] = "Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3";
    	$headers[] = "Accept-Encoding: gzip,deflate";
    	$headers[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    	$headers[] = "Keep-Alive: 300";
    	$headers[] = "Connection: keep-alive";
    	$headers[] = "Content-length:".count($postfields);
     
    	//url de la page de soumission
    	$url = "http://www....";
    	$useragent = "Mozilla/5.0";
    	$referer = "http://www....\r\n";
     
    	//Initialise une session CURL
    	$ch = curl_init($url);
    	//CURL options
    	//on défini les entetes de la requete http pour lui donner un content-lenght
    	curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    	//On poste les données du tableau $postfields
    	curl_setopt($ch, CURLOPT_POST, 1);
    	curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
    	//On définit un useragent ici Mozilla/5.0
    	//souvent les bots se font passés pour googlebot ce qui finalement est stupide
    	//On passe donc un useragent banal
    	curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
    	//On passe un referrer ici on passe la même page $url
    	curl_setopt($ch, CURLOPT_REFERER, $referer);
    	//on récupère le contenu de la page de résultat de la soumission dans une chaine
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     
    	//Page de résultats et fermeture de session
    	$result = curl_exec($ch);
    	curl_close($ch);
     
    	//on peut faire un echo du résultat obtenu
    	echo $result;
    ?>
    si jamais je ne met pas \r\n a la fin de mon referer j'obtien cette erreur :
    The following problem has been reported:

    * Your specified referrer company code could not be accepted

    et du coup jai essayer avec et mon message d'erreur change et j'obtien :
    Length Required

    je pense du coup qu'il mes les fauts et jai regarder pour l'entete de curl et j'ai vu que l'on pouvait les passer des parametres donc j'ai pensez a lui donnée un content-length qui est sensé regler les erreur http 411, mais la sa ne fonctionne pas.


    A tu une idée de ce que pourrais faire pour eviter cette erreur ??

    Merci pour ton aide

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    L'erreur 413 est tout à fait normal puisque vous avez indiqué une valeur totalement fausse au niveau de l'entête Content-Length :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers[] = "Content-length:".count($postfields);
    Sans cela ça a l'air de fonctionner, je récupère bien ces entêtes côté serveur :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    User-Agent: Mozilla/5.0
    Host: localhost
    Referer: http://www.developpez.com
    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Content-Length: 1451
    Expect: 100-continue
    Content-Type: multipart/form-data; boundary=----------------------------c3674d5e0717
    Je ferais remarquer, que l'entête Content-Length, ce n'est pas moi qui l'ait indiqué.


  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    Heu d'accord mais qu'est ce que je dois mettre dans mon content-length car ce n'est pas une valeur comme 200 car j'ai aussi essayer et sa ne marche pas plus et on ne peut pas faire de strlen d'un tableau ??

    Merci pour ton aide.

Discussions similaires

  1. Requête POST du cURL au pecl_http
    Par pointeur dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 06/08/2011, 14h47
  2. [XML] Réponse à la requête POST VIA XML
    Par cilv1 dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 01/02/2006, 11h18
  3. [Socket] Réponse à la requête POST
    Par cilv1 dans le forum Langage
    Réponses: 4
    Dernier message: 20/10/2005, 18h18
  4. Comment envoyer une requête POST via HTTP ?
    Par pdtor dans le forum C++
    Réponses: 2
    Dernier message: 13/09/2005, 05h54
  5. Analyse de code HTML en réponse a une requête post.
    Par ghost942 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 04/06/2005, 21h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo