Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend_Http_响应的getRawBody()和getBody()方法之间的区别?_Php_Http_Zend Framework_Response - Fatal编程技术网

Php Zend_Http_响应的getRawBody()和getBody()方法之间的区别?

Php Zend_Http_响应的getRawBody()和getBody()方法之间的区别?,php,http,zend-framework,response,Php,Http,Zend Framework,Response,嗨,wondring,$response->getBody()和$response->getRawBody()之间有什么区别 getRawBody()按原样返回http响应的主体 getBody()针对某些标题进行调整,即解压缩使用gzip发送的内容或对内容编码标题进行放气。或分块传输编码头 在中找出这些问题的最简单方法是查看代码。这也是一次很好的学习经历。为了简洁起见,对代码进行了编辑 public function getRawBody() { return $this->bo

嗨,wondring,$response->getBody()和$response->getRawBody()之间有什么区别

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

HTTP主体可以以各种方式编码。 例如,可以将其拆分为不同的块,每个块前面都有块大小,或者gzip:

getBody()将根据其编码类型返回已处理的HTTP正文。
getRawBody将按原样返回HTTP正文。

我现在理解了区别,感谢您花时间回答,
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;
}