Как отключить CHUNKED перевод-кодирование?

Мне нужно отключить кодирование передачи по частям, но я не знаю, имел ли я намерение сделать это как-то в настройке или в конкретном запросе.
Я отправляю данные через SoapClient на PHP.

$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

Решение

В соответствии с соответствующая статья в Википедии, HTTP / 1.1 указывает, что чанкованное кодирование всегда допустимо, поэтому единственный способ попросить сервер не использовать его — это понизить соединение до HTTP / 1.0.

Причина, по которой вам нужно это Ошибка PHP # 47021, комментарий, который показывает, как это сделать, создав Контекст потока, который затем может быть передан 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
]
);
0

Другие решения

Других решений пока нет …