php soap teradata soap-client

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