Example #1
0
 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);
 }