soapclient setsoapheaders example ejemplo php authentication soap nusoap wso2

setsoapheaders - Autenticación SOAP con PHP



soapclient php example wsdl (2)

Necesito conectarme a un servicio web que requiere credenciales de autenticación en forma de un nombre de usuario y contraseña de texto sin formato.

Tengo una comprensión básica de SOAP y he logrado conectarme a otros servicios web abiertos que no requieren un nombre de usuario o contraseña usando NuSOAP.

El siguiente me fue enviado:

<?php // Set up security options $security_options = array("useUsernameToken" => TRUE); $policy = new WSPolicy(array("security" => $security_options)); $security_token = new WSSecurityToken(array( "user" => "xxx", "password" => "xxx", "passwordType" => "basic")); // Create client with options $client = new WSClient(array("wsdl" => "https://xxx.asmx?wsdl", "action" => "http://xxx", "to" => "https://xxx", "useWSA" => ''submission'', "CACert" => "cert.pem", "useSOAP" => 1.1, "policy" => $policy, "securityToken" => $security_token)); // Send request and capture response $proxy = $client->getProxy(); $input_array = array("From" => "2010-01-01 00:00:00", "To" => "2010-01-31 00:00:00"); $resMessage = $proxy->xxx($input_array); ?>

Después de algunas investigaciones, entiendo que la implementación anterior usa wso2. Necesito poder hacer esto sin usar wso2.

Hice mi mejor esfuerzo para buscar recursos (Google, foros, etc.) sobre lo anterior, pero no he podido encontrar nada. He leído algunos tutoriales en SOAP y he podido configurar un cliente SOAP utilizando PHP, pero no puedo entender todas las autenticaciones y las "políticas".

¡Una explicación de cómo lograr esto y tal vez algunos enlaces para leer más sobre esto sería muy apreciada ya que me estoy arrancando el pelo! Idealmente, quisiera algunos enlaces a recursos para un principiante absoluto de la autenticación SOAP.

Gracias. PD: algunos de los enlaces / credenciales en los anteriores podrían haber sido xxx para privacidad.



Si tiene habilitada la extensión SOAP en php (php version> = 5.0.1), puede usar la clase SoapClient para procesar su solicitud. Para autenticarse, puede pasar el nombre de usuario y la contraseña a la clase con la URL de destino:

$soapURL = "https://www.example.com/soapapi.asmx?wsdl" ; $soapParameters = Array(''login'' => "myusername", ''password'' => "mypassword") ; $soapFunction = "someFunction" ; $soapFunctionParameters = Array(''param1'' => 42, ''param2'' => "Search") ; $soapClient = new SoapClient($soapURL, $soapParameters); $soapResult = $soapClient->__soapCall($soapFunction, $soapFunctionParameters) ; if(is_array($soapResult) && isset($soapResult[''someFunctionResult''])) { // Process result. } else { // Unexpected result if(function_exists("debug_message")) { debug_message("Unexpected soapResult for {$soapFunction}: ".print_r($soapResult, TRUE)) ; } }

Si no está seguro de las funciones a las que puede llamar, puede ver la URL objetivo (por ejemplo, terminando en ".asmx? Wsdl") en su navegador. Debería obtener una respuesta XML que le indique las funciones de SOAP disponibles a las que puede llamar y los parámetros esperados de esas funciones.