如何禁用CHUNKED传输编码?

时间:2015-04-10 06:37:19

标签: php soap chunked-encoding

我需要禁用分块传输编码,但我不知道我是不是在设置中以某种方式或在特定请求中进行了操作。 我通过PHP中的SoapClient发送数据。

$soapClient = new SoapClient("https://ws-something.com/services/specialservice?wsdl",
              array('trace' => 1,
                    'cache_wsdl' => WSDL_CACHE_NONE)); 
$result = $soapClient->Function($login,$xml,true);

我认为关键部分是需要使用禁用的分块传输编码发送的第二个参数。 $xml包含一个普通的xml字符串,但可能是一个对象..

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

根据the relevant Wikipedia article,HTTP / 1.1指定chunked编码总是允许的,因此要求服务器不使用它的唯一方法是将连接降级到HTTP / 1.0。

您需要的原因是PHP Bug#47021,其中的评论通过创建Stream Context显示如何执行此操作,然后可以将其传递给SoapClient构造函数:

$http_context = stream_context_create([
    'http' => ['protocol_version' => '1.0']
]);
$this->client = new SoapClient(
    'http://example.com/some.chunked.send.wsdl',
    [
         'trace' => 1,
         'cache_wsdl' => WSDL_CACHE_NONE,
         'stream_context' => $http_context
    ]
);