Загрузка удалённого WSDL может происходить внутри конструктора SoapClient. Укажите прокси до этого первого получения:

$client = new SoapClient('https://service.example.com/api?wsdl', [
    'proxy_host' => '203.0.113.10',
    'proxy_port' => 8080,
    'proxy_login' => getenv('PROXY_USER'),
    'proxy_password' => getenv('PROXY_PASSWORD'),
    'connection_timeout' => 5,
    'exceptions' => true,
]);

Используйте настоящий WSDL, хост/порт прокси и предполагаемый источник учётных данных. Поле хоста — это адрес, а его порт отдельно.

Когда это не работаетЗапрос или операция для проверки
Создание клиентаПолучение WSDL или обработка документа.
Обработка импортированного документа/схемыФактический дополнительный URL получения.
Вызов метода SOAPКонечная точка службы, объявленная в WSDL, возможно, на другом хосте.

Процесс с кэшированным WSDL может пропустить запрос, который не удаётся на другой машине. Сохраняйте конфигурацию кэша и фактически неудачный URL вместе со сравнением, а не меняйте прокси только на основании успешного создания.

proxy_login/proxy_password аутентифицируют посредника. login/password назначения и аутентификация службы на уровне SOAP служат другим слоям. Используйте специальные параметры вместо того, чтобы помещать похожие на учётную запись заголовки в User-Agent; необходимые заголовки приложения относятся к поддерживаемому интерфейсу заголовков.

Зафиксируйте операцию, цель и сторону, выдающую запрос с удалением секретов. connection_timeout ограничивает установление соединения, а не полную длительность долгой операции SOAP.

Похожие статьи