phplibrary/core/connection/httpconnection.php
2016-06-29 18:51:32 +03:00

95 lines
2.2 KiB
PHP

<?php
// HttpConncectionRequest
class HttpConnection
{
const POST = "POST";
const GET = "GET";
private $param = array(); // Ïàðàìåòðû çàïðîñà
public $data = null; // Ñîäåðæàíèå
public $url; // Àäðåññ
public $method = self::GET; // Ìåòîä
public $port = 80;
public $host = "";
public $proxy_host = false;
public $proxy_port = false;
/**
* Âîçâðàùàåò çàãîëîâîê ñîåäèíåíèÿ
*/
public function getHeader()
{
$result = $this->method . " " . $this->url . " HTTP/1.1\r\n";
$result .= "Host: ". $this->host ."\r\n";
foreach ($this->param as $key => $value) {
$result .= $key . ": " . $value . "\r\n";
}
$result .= "Connection: Close\r\n\r\n";
$result .= $this->data;
return $result;
}
/**
* Óñòàíîâêà ïàðàìåòðîâ çàïðîñà
* @parma string $name
* @parma string $value
*/
public function setParameter($name, $value)
{
$this->param[$name] = $value;
}
/**
* Ìåòîä çàïðîñà GET èëè POST
*/
public function setMethod($method)
{
$this->method = $method;
}
public function setUrl($url)
{
$this->url = $url;
$this->host = parse_url($this->url, PHP_URL_HOST);
}
public function getUrl()
{
return $this->url;
}
/**
* Ñîäåðæàíèå çàïðîñà
*/
public function setContent($data)
{
$this->setParameter ("Content-length", strlen($data));
$this->data = $data;
}
/**
* Ïîñûëàåò çàïðîñ è âîçâðàùàåò ñòðàíèöó
*/
public function getPage()
{
$host = ($this->proxy_host) ? $this->proxy_host : $this->host;
$port = ($this->proxy_port) ? $this->proxy_port : $this->port;
$socket = fsockopen($host, $port, $errno, $errstr, 30);
if (! $socket) {
return null; // Exception
} else {
$header = $this->getHeader();
fwrite($socket, $header);
$result = null;
while (! feof($socket)) {
$result .= fgets($socket, 128);
}
fclose($socket);
return $result;
}
return null;
}
}