php soap client header authentication
Soap Header con Authorization Basic en PHP nativo (2)
Eso es porque debe codificar sus credenciales de inicio de sesión de esta manera:
base64_encode("$login:$password")
en lugar de: base64_encode($login) . '':'' . base64_encode($password)
base64_encode($login) . '':'' . base64_encode($password)
Necesito conectarme con la API SOAP de TeraData, que ahora exige que se envíe un encabezado básico de autorización con las credenciales de inicio de sesión. No sé cómo abordar el problema. Obtuve el acceso al trabajo en SoapUI cuando agregué el encabezado de autorización básica. Por favor, ¿alguien puede ayudarme a obtener el código correcto?
Aquí está el encabezado que envía SoapUI y la respuesta es buena:
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]
Así es como estoy tratando de configurar mi 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);
no es aceptado y acabo de recibir un HTTP / 1.1 401 Error no autorizado
La stacktrace me muestra el encabezado que envié, la parte de Autorización falta allí.
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
hombre, fui tan estúpido
$client = new SoapClient($wsdl, array("trace" => 1, "exceptions" => 0,
"login" => $login, "password" => $password) );