soy muy nuevo en jabón (es decir, ninguna pista!)Problemas de enviar las cabeceras SOAP de autenticación en php
me han preguntado por un cliente para interactuar con un servicio SOAP existente que requiere autenticación hecho a través de mis encabezados SOAP (una simple nombre de usuario y contraseña)
tengo 3 métodos a mi disposición,
IsAlive IsAliveSecure ChangeUserDetails
IsAlive simplemente devuelve cierto y puedo llamarlo sin problema
IsAliveSecure devuelve verdadero con la debida autorización y no puedo conseguirlo para volver realidad.
básicamente necesito enviar la petición siguiente:
POST /ripplecomprovisioning.asmx HTTP/1.1
Host: provisioning.example.ie
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.blueface.ie/provisioning/IsAliveSecure"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<SoapAuthHeader xmlns="http://www.example.ie/provisioning/">
<Username>myusername</Username>
<Password>mypassword</Password>
</SoapAuthHeader>
</soap:Header>
<soap:Body>
<IsAliveSecure xmlns="http://www.example.ie/provisioning/" />
</soap:Body>
</soap:Envelope>
Mi pregunta es cómo puedo enviar una solicitud con formato como el de arriba en php?
esto es lo que he intentado pero sin éxito:
$ SoapClient = new SoapClient ("https://provisioning.example.ie/ripplecomprovisioning.asmx?WSDL");
// Prepare SoapHeader parameters
$sh_param = array(
'Username' => 'myusername',
'Password' => 'mypassword');
$headers = new SoapHeader('ripplecomprovisioning', 'SoapAuthHeaders', $sh_param);
// Prepare Soap Client
$soapClient->__setSoapHeaders(array($headers));
$result = $soapClient->isAlive();
echo var_dump($result);
echo "<br /><br />";
$result = $soapClient->IsAliveSecure();
echo var_dump($result);
la salida de lo anterior es como sigue:
object(stdClass)#3 (1) {
["IsAliveResult"]=>
bool(true)
}
<br /><br />
Fatal error: Uncaught SoapFault exception: [soap:Server] System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.UnauthorizedAccessException: Attempted to perform an unauthorized operation.
at example.VoIP.Provisioning.RipplecomProvisioningServices.IsAliveSecure()
--- End of inner exception stack trace --- in /var/www/ripplecomweb/authentication/soap.php:20
Stack trace:
#0 [internal function]: SoapClient->__call('IsAliveSecure', Array)
#1 /var/www/ripplecomweb/authentication/soap.php(20): SoapClient->IsAliveSecure()
#2 {main}
thrown in /var/www/ripplecomweb/authentication/soap.php on line 20
Cualquier ayuda con esto sería muy apreciada. ¡No puedo permitirme el lujo de fallar!
Gracias
Kev