【问题标题】:How to disable CHUNKED transfer-encoding?如何禁用 CHUNKED 传输编码?
【发布时间】:2015-06-15 18:54:24
【问题描述】:

我需要禁用分块传输编码,但我不知道我是否应该在设置中以某种方式或在特定请求中执行此操作.. 我正在通过 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 字符串,但可能是一个对象..

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: php soap chunked-encoding


    【解决方案1】:

    根据the relevant Wikipedia article,HTTP/1.1 指定始终允许分块编码,因此要求服务器不使用它的唯一方法是将连接降级到 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
        ]
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-29
      • 2012-07-22
      • 2014-07-01
      • 2011-09-12
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多