Как предотвратить http перенаправления при использовании SoapClient? - PullRequest
2 голосов
/ 16 апреля 2019

Я использую стандартный класс SoapClient для отправки запросов на платежный сервер.

$context = stream_context_create([
    'http' => [
        'follow_location' => 0,
    ],
]);

$options = [
    'uri' => 'urn:PaymentServer',
    'location' => 'http://localhost:8001/index.php',
    'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
    'trace' => true,
    'soap_version' => SOAP_1_1,
    'stream_context' => $context,
    'connection_timeout' => 50,
];
$soapClient = new SoapClient(null, $options);

try {
    var_export($soapClient->GetPayment([]));
} catch (Throwable $e) {
    echo $e->getMessage();

    var_export($soapClient->__getLastResponse());
}

Сценарий http://localhost:8001/index.php содержит следующий код

header('Location: http://example.com', true, 302);
exit;

Я ожидаю пустой результат, но фактический вывод содержит HTML с example.com

Я пробовал get_file_contents функцию с тем же контекстом потока:

var_export(file_get_contents('http://localhost:8001/index.php', false, $context));

И у меня есть пустая строка.

Какой параметр SoapClient или контекст потока должен быть установлен для предотвращения перенаправлений?

...