diff --git a/src/HttpClients/HttpClientRawResponse.php b/src/HttpClients/HttpClientRawResponse.php index 09c541d..7c3082d 100644 --- a/src/HttpClients/HttpClientRawResponse.php +++ b/src/HttpClients/HttpClientRawResponse.php @@ -76,14 +76,16 @@ private function setHeadersAndCode($rawHeaders) // or a proxy was followed, etc $headerCollection = explode("\n\n", trim($rawHeaders)); // We just want the last response (at the end) - $rawHeader = array_pop($headerCollection); - $headerComponents = explode("\n", (string)$rawHeader); - foreach ($headerComponents as $line) { - if (strpos($line, ': ') === false) { - $httpCode = $this->getHttpResponseCodeFromHeader($line); - } else { - list($key, $value) = explode(': ', $line, 2); - $headers[$key] = $value; + while ($httpCode === 0 && count($headerCollection) > 0) { + $rawHeader = array_pop($headerCollection); + $headerComponents = explode("\n", (string)$rawHeader); + foreach ($headerComponents as $line) { + if (strpos($line, ': ') === false) { + $httpCode = $this->getHttpResponseCodeFromHeader($line); + } else { + list($key, $value) = explode(': ', $line, 2); + $headers[$key] = $value; + } } }