嗨,我们知道$ 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();
}
答案 0 :(得分:9)
getRawBody()
按原样返回http响应的正文。
getBody()
调整某些标头,即解压缩使用gzip或deflate内容编码标头发送的内容。或者是分块的传输编码头。
最简单的方法是将这些问题简单地看一下代码。也是一个很棒的学习经历。编译代码是为了简洁起见。
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;
}
答案 1 :(得分:1)
HTTP主体可以以各种方式编码。 例如,它可以分成不同的块,每个块都以块大小开头,或者gzipped:
http://en.wikipedia.org/wiki/Chunked_transfer_encoding
getBody()将根据其编码类型返回已处理的HTTP正文。 getRawBody将按原样返回HTTP主体。