2 votes

Différence entre les méthodes getRawBody() et getBody() de Zend_Http_Response ?

Bonjour, quelle est la différence entre $response->getBody() et $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();

        }

9voto

xzyfer Points 6465

getRawBody() renvoie le corps de la réponse http tel quel.

getBody() ajuster pour certains en-têtes, c'est-à-dire décompresser le contenu envoyé avec les en-têtes de codage de contenu gzip ou deflate. Ou l'en-tête chunked transfer-encoding.

Le moyen le plus simple de répondre à ces questions est de regarder simplement le code. C'est aussi une excellente expérience d'apprentissage. Le code est modifié pour plus de concision.

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;
}

1voto

Macmade Points 27414

Le corps HTTP peut être codé de différentes manières. Par exemple, il peut être divisé en plusieurs morceaux, chacun étant précédé de la taille du morceau, ou être compressé :

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

getBody() retournera un corps HTTP traité, selon son type d'encodage. getRawBody renverra le corps HTTP tel quel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X