Настройки прокси PHP SoapClient для WSDL и вызовов служб
Настройте параметры прокси PHP SoapClient для загрузки WSDL и вызовов служб, не добавляя учётные данные в User-Agent.
Загрузка удалённого 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.