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 :

Cherche la doc et exemples des classes HTTP, ou encore mieux les codes sources


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut Cherche la doc et exemples des classes HTTP, ou encore mieux les codes sources
    Bonjour,

    Je ne trouve pas la doc complète sur les classes php
    en particuler HttpMessage, HttpRequest et HttpReponse.

    Je n'arrive pas à trouver la bonne doc ou des exemples.
    J'ai juste réussi à récuperer un bout de code dans l'une des contributions mais je ne sais plus dans quelle fonction PHP.

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    class HttpRequest
    {
        var $sHostAdd;
        var $sUri;
        var $iPort;
     
        var $sRequestHeader;
     
        var $sResponse;
     
        function HttpRequest($sUrl)
        {
            $sPatternUrlPart = '/http:\/\/([a-z-\.0-9]+)(:(\d+)){0,1}(.*)/i';
            $arMatchUrlPart = array();
            preg_match($sPatternUrlPart, $sUrl, $arMatchUrlPart);
     
            $this->sHostAdd = gethostbyname($arMatchUrlPart[1]);
            if (empty($arMatchUrlPart[4]))
            {
                $this->sUri = '/';
            }
            else
            {
                $this->sUri = $arMatchUrlPart[4];
            }
            if (empty($arMatchUrlPart[3]))
            {
                $this->iPort = 80;
            }
            else
            {
                $this->iPort = $arMatchUrlPart[3];
            }
     
            $this->addRequestHeader('Host: '.$arMatchUrlPart[1]);
            $this->addRequestHeader('Connection: Close');
        }
     
        function addRequestHeader($sHeader)
        {
            $this->sRequestHeader .= trim($sHeader)."\r\n";
        }
     
        function sendRequest($sMethod = 'GET', $sPostData = '')
        {
            $sRequest = $sMethod." ".$this->sUri." HTTP/1.1\r\n";
            $sRequest .= $this->sRequestHeader;
            if ($sMethod == 'POST')
            {
                $sRequest .= "Content-Type: application/x-www-form-urlencoded\r\n";
                $sRequest .= "Content-Length: ".strlen($sPostData)."\r\n";
                $sRequest .= "\r\n";
                $sRequest .= $sPostData."\r\n";
            }
            $sRequest .= "\r\n";
     
            $sockHttp = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
            if (!$sockHttp)
            {
                die('socket_create() failed!');
            }
     
            $resSockHttp = socket_connect($sockHttp, $this->sHostAdd, $this->iPort);
            if (!$resSockHttp)
            {
                die('socket_connect() failed!');
            }
     
            socket_write($sockHttp, $sRequest, strlen($sRequest));
     
            $this->sResponse = '';
            while ($sRead = socket_read($sockHttp, 4096))
            {
                $this->sResponse .= $sRead;
            }
     
            socket_close($sockHttp);
        }
     
        function getResponse()
        {
            return $this->sResponse;
        }
     
        function getResponseBody()
        {
            $sPatternSeperate = '/\r\n\r\n/';
            $arMatchResponsePart = preg_split($sPatternSeperate, $this->sResponse, 2);
            return $arMatchResponsePart[1];
        }
    }

  2. #2
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    http est une extension (PECL certes, pour le moment tout du moins) de PHP (donc écrite en C). Le code que vous nous montrez n'en est qu'une réimplémentation partielle en PHP (4) pur. Donc je ne vois pas le rapport entre les deux

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par julp
    http est une extension (PECL certes, pour le moment tout du moins) de PHP (donc écrite en C). Le code que vous nous montrez n'en est qu'une réimplémentation partielle en PHP (4) pur. Donc je ne vois pas le rapport entre les deux
    Disons que c'est à partir de ce code que je commence à comprendre comment ça marche. Je croyait que les classes HttpMessage, HttpRequest et HttpReponse sont écrites en PHP, c'est juste pour ça. Sinon il faut toujours avancer tout seul dans le noir.

  4. #4
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    "Avancer tout seul dans le noir" Vous trouvez beaucoup d'informations dans la documentation et n'y figure dans celle-ci, et en toute logique, que les extensions PHP.

    Au fait quelle est votre question ou problème ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par julp
    "Avancer tout seul dans le noir" Vous trouvez beaucoup d'informations dans la documentation et n'y figure dans celle-ci, et en toute logique, que les extensions PHP.

    Au fait quelle est votre question ou problème ?
    Je voudrais faire des requettes HTTP mais le tout petit bout de code d'exemple n'est pas très parlant.

  6. #6
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Avec ou sans l'extension http ? Avec la classe donnée plus haut ? Autres ? Quelle est la complexité de votre requête : il y a-t-il des entêtes à ajouter (cookies par exemple), des données POST à envoyer, autres ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par julp
    Avec ou sans l'extension http ? Avec la classe donnée plus haut ? Autres ? Quelle est la complexité de votre requête : il y a-t-il des entêtes à ajouter (cookies par exemple), des données POST à envoyer, autres ?
    Avec extension HTTP, sans la classe donnée plus haut, il y a des données POST à envoyer avec des cookies et autres.

  8. #8
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Un exemple ?
    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
    <?php
    try {
        # On crée notre "requête HTTP"
        $hreq = new HttpRequest('http://localhost/test.php', HTTP_METH_POST);
        # On définit les données POST à envoyer
        $hreq->setPostFields(
            array(
                'champ_post_1' => 'valeur1',
                'champ_post_2' => 'valeur2'
            )
        );
        # On définit les cookies à envoyer
        $hreq->setCookies(
            array(
                'champ_cookie_1' => 'valeur1',
                'champ_cookie_2' => 'valeur2'
            )
        );
        # On effectue la requête et on en récupère la réponse (de type HttpMessage)
        $hrep = $hreq->send();
        if ($hrep->getResponseCode() == 200) { # Tout s'est bien passé
            header('Content-type: text/plain');
            echo $hrep->getBody();
        } else {
            die($hrep);
        }
    } catch (HttpException $e) {
        die($e->getMessage());
    }
    Un script pour tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    echo '$_COOKIE :' . PHP_EOL;
    print_r($_COOKIE);
    echo '$_POST :' . PHP_EOL;
    print_r($_POST);
    Résultat :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $_COOKIE :
    Array
    (
        [champ_cookie_1] => valeur1
        [champ_cookie_2] => valeur2
    )
    $_POST :
    Array
    (
        [champ_post_1] => valeur1
        [champ_post_2] => valeur2
    )

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/05/2010, 21h24
  2. rendre une classe serializable sans les codes sources
    Par LittleBean dans le forum Langage
    Réponses: 2
    Dernier message: 19/04/2007, 10h47
  3. Je Cherche Les Codes Sources D'un Erp
    Par acipeg dans le forum Forum général ERP
    Réponses: 7
    Dernier message: 22/03/2007, 16h04
  4. utiliser des classes dont on n'a pas le source
    Par kocin dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/08/2004, 16h05

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