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

Langage PHP Discussion :

fsockopen: Length Required


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Par défaut fsockopen: Length Required
    Pour les gourous de php merci de me répondre si vous savez

    Pourquoi j'obtiens comme message du serveur "Length Required" alors qu'il y a bien Content-Length: ".strlen($post_var)."\r\n de spécifié dans le code source ?

    Message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HTTP/1.1 411 Length Required 
    Connection: Close

    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
     
    <?
    	$proxy = "...";
                   $port = ...;
    	$login = "..."; 
    	$passwd = "...";
     
        $url = "http://search.yahoo.com/search";
        $fp = fsockopen($proxy, $port);
        if ($fp) {
            $post_var = urlencode('p=test');
     
            $request = "POST $url HTTP/1.1\r\n
            Host: $proxy\r\n
            Content-Length: ".strlen($post_var)."\r\n
            Content-Type: application/x-www-form-urlencoded\r\n
            Proxy-Authorization: Basic".base64_encode("$login:$passwd")."\r\n
            Connection: Close\r\n".$post_var."\r\n";
     
            fputs ($fp, $request);
            while (!feof($fp)) echo fgets ($fp,4000).'<br />';
        } // end if ($fp)
            fclose ($fp);
    ?>

  2. #2
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    Aucune idée, mais ce n'est pas un problème de code php, c'est un problème de respect des spécifications du protocole http apparament ...
    Mon conseil : utilise ton navigateur web pour envoyer la meme requete http que celle que tu voudrais coder en php, et analyse la requete ainsi envoyée avec ethereal
    Sinon tu peux aussi te pencher sur les specs de http, mais bon ... faut en voiloir ! (ceci dit ça ne pourras que être enrichissant).
    Mais je suppose qu'il doit bien y avoir quelqu'un dans ce forum qui pourra trouver la solution.

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Par défaut
    Merci Hervé. Bon je propose de repartir d'un truc qui marche: quand le protocole est GET (voir ligne $request = "GET ) ça renvoie bien la page de yahoo.

    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
     
    <?php
     
    $ip = "..."; 
    $port = ...; 
     
    $login = "..."; 
    $passwd = "...";
     
    $url = "http://search.yahoo.com/search?p=test";
     
    $request = "GET $url HTTP/1.0\r\nHost:www.yahoo.com:80\r\nProxy-Authorization: Basic ".base64_encode("$login:$passwd") ."\r\n\r\n";
     
    $fp = fsockopen($ip,$port); // connect to proxy
     
    fputs($fp, $request);
     
    $data="";
    while (!feof($fp)) $data.=fgets($fp,64000);
     
    fclose($fp);
     
    print $data;
    ?>
    Je voudrais juste qu'on transforme ça en POST ($request = "POST ) merci.

Discussions similaires

  1. Error : a column definition list is required ....
    Par chico_du_33 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/01/2006, 17h35
  2. [Forms6i], required item
    Par orcl dans le forum Forms
    Réponses: 4
    Dernier message: 25/05/2004, 17h31
  3. sql string length
    Par pedro226 dans le forum Bases de données
    Réponses: 9
    Dernier message: 05/05/2004, 10h43
  4. Bug sur la prorpiété required d'un TField avec ADO ???
    Par denrette dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/11/2003, 11h04
  5. ERROR: pg_atoi: zero-length string
    Par steelspirit92 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 23/08/2003, 22h29

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