AwsInspector\Helper\Curl::doRequest PHP Метод

doRequest() публичный Метод

public doRequest ( )
    public function doRequest()
    {
        $this->responseHeaders = [];
        $this->responseBody = [];
        $command = $this->getCurlCommand();
        $result = $this->connection->exec($command);
        if ($result['returnVar'] != 0) {
            throw new \Exception('Curl error: ' . $this->getCurlError($result['returnVar']));
        }
        if (!isset($result['output'])) {
            throw new \Exception('No output found');
        }
        // the command FIRST returns the body and THEN the headers (I tried many different ways and no matter
        // what's redirected to what curl alwyas seems to dump the headers last
        $httpLine = false;
        do {
            $line = array_pop($result['output']);
            // yes, this is really ugly...
            // I wish we'd be able to separate header and body in a cleaner way
            // but we can't do this with exec(), and proc_open also doesn't make things easier
            if (preg_match('|HTTP/\\d\\.\\d\\s+(\\d+)\\s+.*|', $line, $matches)) {
                $this->setResponseCode($matches[0]);
                $httpLine = true;
                // put the rest back since it belongs to the response body
                $restOfThatLine = preg_replace('|HTTP/\\d\\.\\d\\s+(\\d+)\\s+.*|', '', $line);
                if ($restOfThatLine) {
                    array_push($result['output'], $restOfThatLine);
                }
            }
            if (!$httpLine && !empty($line)) {
                $this->parseHeader($line);
            }
        } while (!$httpLine);
        $this->responseBody = implode("\n", $result['output']);
        return $this;
    }

Usage Example

Пример #1
0
 public function getHttpStatusCode($url)
 {
     $curlHelper = new Curl($url, [], $this->getSshConnection());
     $curlHelper->doRequest();
     return $curlHelper->getResponseCode();
 }