Cabeçalho de sabão com autorização básica em PHP nativo
preciso conectar-me à API SOAP TeraData, que agora exige que um cabeçalho básico de autorização seja enviado com as credenciais de logon. Não sei como resolver o problema. Eu consegui o acesso trabalhando no SoapUI ao adicionar o cabeçalho de autorização básica - alguém pode me ajudar a obter o código correto:
Aqui está o cabeçalho que o SoapUI envia e a resposta é boa:
POST http://example.com/api/soap/v6 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: 302
Host: example.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Authorization: Basic [user&pass-base64-encoded]
Aqui está como eu estou tentando configurar meu SoapClient:
$namespace = "http://ecircle.com/developer/ecmapi";
$wsdl = "https://sslh.teradatadmc.com/teradata/api/soap/v6?wsdl";
$client = new SoapClient($wsdl, array("trace" => 1, "exceptions" => 0));
$login = 'xxx';
$password = 'yyy';
$header = new SoapHeader($namespace, 'Authorization: Basic',
base64_encode("$login:$password"));
$client->__setSoapHeaders($header);
não é aceito e recebo apenas um erro não autorizado HTTP / 1.1 401
O stacktrace me mostra o cabeçalho que enviei - a parte de Autorização está ausente lá.
public '__last_request_headers' => string 'POST /api/soap/v6 HTTP/1.1
Host: example.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.5.12
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 584