private static function sendRequest($Request, $options = array()) { if (!empty($Request->body)) { $Request->headers['Content-Length'] = strlen($Request->body); } if (empty($Request->headers['Host'])) { $Request->headers['Host'] = $Request->host; } if (empty($Request->timeout)) { $Request->timeout = HttpUtils::DEFAULT_TIMEOUT; } if (empty($Request->port)) { $Request->port = 80; } $req = "{$Request->method} {$Request->path} HTTP/1.0\r\n"; foreach ($Request->headers as $key => $val) { $req .= "{$key}: {$val}\r\n"; } $req .= "\r\n" . (!empty($Request->body) ? $Request->body : ''); $errno = $errstr = null; $f = @fsockopen($Request->host, $Request->port, $errno, $errstr, $Request->timeout); if (!$f) { $Response = new StdClass(); $Response->isError = "Connecting to {$Request->host}:{$Request->port} failed: {$errstr}, {$errno}"; return $Response; } stream_set_blocking($f, 0); fputs($f, $req); $res = ''; while (!feof($f)) { $res .= fgets($f, 1024); } fclose($f); return HttpUtils::parseHttpResponse($res, $options); }