Разница между методами getRawBody() и getBody() Http-ответа Zend?


Привет, удивительно, в чем разница между $response->getBody() и $response->getrawbody();

$this->_client->setUri('http://www.google.com/ig?hl=en');
        try {
            $response = $this->_client->request();
        }catch(Zend_Http_Exception $e)
        {
            echo 'Zend http Client Failed';
        }
        echo get_class($response);
        if($response->isSuccessful())
        {
           $response->getBody();
           $response->getRawBody();

        }
Author: Mr Coder, 2011-02-26

2 answers

getRawBody() возвращает тело http-ответа как есть.

getBody() отрегулируйте для определенных заголовков, т. е. распакуйте содержимое, отправленное с помощью gzip, или выкачайте заголовки, кодирующие содержимое. Или фрагментированный заголовок кодирования передачи.

Самый простой способ разобраться в этих вопросах - просто взглянуть на код. Также отличный опыт обучения. Код отредактирован для краткости.

public function getRawBody()
{
    return $this->body;
}

public function getBody()
{
    $body = '';

    // Decode the body if it was transfer-encoded
    switch (strtolower($this->getHeader('transfer-encoding'))) {
        case 'chunked':
            // Handle chunked body
            break;
        // No transfer encoding, or unknown encoding extension:
        default:
            // return body as is
            break;
    }

    // Decode any content-encoding (gzip or deflate) if needed
    switch (strtolower($this->getHeader('content-encoding'))) { 
        case 'gzip':
             // Handle gzip encoding
            break;
        case 'deflate':
            // Handle deflate encoding
            break;
        default:
            break;
    }

    return $body;
}
 9
Author: xzyfer, 2011-02-26 06:50:13

Тело HTTP может быть закодировано различными способами. Например, он может быть разделен на разные куски, каждому из которых предшествует размер куска, или сжат:

Http://en.wikipedia.org/wiki/Chunked_transfer_encoding

GetBody() вернет обработанное тело HTTP в соответствии с его типом кодировки. getRawBody вернет тело HTTP как есть.

 1
Author: Macmade, 2011-02-26 06:50:22