O carregamento de um WSDL remoto pode ocorrer dentro do construtor do SoapClient. Forneça o proxy antes dessa primeira obtenção:

$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,
]);

Use o WSDL real, o host/porta do proxy e a origem de credenciais pretendida. O campo de host é um endereço, com a porta separada.

Quando falhaSolicitação ou operação a inspecionar
Construção do clienteObtenção do WSDL ou processamento do documento.
Processamento de documento/esquema importadoA URL adicional real de obtenção.
Uma chamada de método SOAPO endpoint do serviço declarado no WSDL, possivelmente em outro host.

Um processo que usa WSDL em cache pode ignorar a solicitação que falha em outra máquina. Mantenha a configuração do cache e a URL que realmente falhou junto com a comparação, em vez de alterar o proxy apenas com base no sucesso da construção.

proxy_login/proxy_password autenticam o intermediário. Os login/password de destino e a autenticação do serviço no nível SOAP atendem a outras camadas. Use as opções dedicadas em vez de colocar cabeçalhos semelhantes a contas no User-Agent; os cabeçalhos de aplicação necessários pertencem a uma interface de cabeçalhos suportada.

Registre a operação, o destino e a parte que emite um desafio com os segredos removidos. connection_timeout limita o estabelecimento da conexão, não a duração completa de uma operação SOAP longa.

Artigos relacionados