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:
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];
}
} |