From 2b1d64f477a4cb588f0fe9217bf60c03fa95029d Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 12 Nov 2007 02:40:04 +0000 Subject: [PATCH] HTTP Request Class (ver0.1) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2956 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/httprequest/XEHttpRequest.class.php | 78 +++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 classes/httprequest/XEHttpRequest.class.php diff --git a/classes/httprequest/XEHttpRequest.class.php b/classes/httprequest/XEHttpRequest.class.php new file mode 100644 index 000000000..7b39e2991 --- /dev/null +++ b/classes/httprequest/XEHttpRequest.class.php @@ -0,0 +1,78 @@ +m_host = $host; + $this->m_port = $port; + $this->m_headers = array(); + } + + /** + * @brief Add (key, value) pair to the HTTP request header + */ + function AddToHeader($key, $value) + { + $this->m_headers[$key] = $value; + } + + /** + * @brief send HTTP message to the host + * @return (result code, response body) + */ + function Send($target, $method="GET", $timeout = 3) + { + $socket = @fsockopen($this->m_host, $this->m_port, $errno, $errstr, $timeout); + if(!$socket) + { + return new Object(-1, "socket_connect_failed"); + } + + $this->AddToHeader('Host', $this->m_host); + $this->AddToHeader('Connection', "close"); + + $crlf = "\r\n"; + $request = "$method $target HTTP/1.1$crlf"; + + foreach($this->m_headers as $equiv => $content) + { + $request .= "$equiv: $content$crlf"; + } + $request .= $crlf; + fwrite($socket, $request); + + list($httpver, $code, $status) = split(' +', rtrim(fgets($socket))); + // read response header + while(strlen(trim($line = fgets($socket)))) + { + list($equiv, $content) = split(' *: *', rtrim($line)); + } + $body = ''; + while(!feof($socket)) + { + $body .= fgets($socket, 128); + } + fclose($socket); + + return array($code, $body); + } + } +?>