Foros del Web » Programando para Internet » PHP »

[Ayuda]Conectar un servicio web .net a través de soap con PHP

Estas en el tema de [Ayuda]Conectar un servicio web .net a través de soap con PHP en el foro de PHP en Foros del Web. Hola, les escribo porque tengo un problema. Tengo que consumir unos webservices creados en .net con PHP. El proceso debería ser simple: 1.- crear el ...
  #1 (permalink)  
Antiguo 19/10/2011, 09:20
optigas
Invitado
 
Mensajes: n/a
Puntos:
Pregunta [Ayuda]Conectar un servicio web .net a través de soap con PHP

Hola,

les escribo porque tengo un problema.

Tengo que consumir unos webservices creados en .net con PHP.

El proceso debería ser simple:

1.- crear el cliente
2.- llamar a la función que necesito.

Pero el problema se da porque el servicio necesita autentificarse a través del Header.

El wsdl del servicio es: http://services.elementk.com/manage/services/CreateStudent_v01.03?wsdl

El header propuesto para el envío de la información (siempre se debe enviar el header con cada llamado a algún servicio, función, método) es el siguiente:

<lmnk:authentication xmlns:lmnk=”http://schemas.elementk.com/headers”>
<lmnk:username>username</lmnk:username>
<lmnk:password>encoded_password</lmnk:password>
<lmnk:domain>domain</lmnk:domain>
</lmnk:authentication>
The username is the account


Yo hice esto:


$wsdl = 'http://services.elementk.com/manage/services/CreateStudent_v01.03?wsdl';
$headerNS = "”http://schemas.elementk.com/headers";
$opts = array(
'trace' => true,
);
/************************************************** ***************************/
/* CREAMOS UN CLIENTE SOAP QUE APUNTA AL SERVVICIO DEW CREAR ALUMNOS */
/************************************************** ***************************/

echo "CREAMOS UN CLIENTE SOAP Y VEMOS SUS FUNCIONES Y TIPOS DE DATOS <BR>";
$client = new SoapClient ($wsdl, $opts);
echo "Funciones del servicios <br>";
var_dump($client->__getFunctions());
echo "<br>--------------------------------------<br>";
echo "Tipos del Servicio <br>";
var_dump ($client->__getTypes());
echo "<br>--------------------------------------<br>";
echo "ultimo pedido soap <br>";
var_dump($client->__getLastRequest());
echo "<br>--------------------------------------<br>";
echo "ultimo respuesta soap <br>";
var_dump($client->__getLastResponse());
echo "<br>--------------------------------------<br>";
echo "ultimo pedido HEADER soap <br>";
var_dump($client->__getLastRequestHeaders());
echo "<br>--------------------------------------<br>";
echo "ultimo respuesta HEADER soap <br>";
var_dump($client->__getLastResponseHeaders());
echo "<br>--------------------------------------<br>";
/************************************************** ***************************/
/* INTENTAMOS MODIFICAR EL HEADER DEL MENSAJE SOAP QUE SE ENVIARA */
/************************************************** ***************************/

echo "<br> AHORA INTENTAMOS MODIFICAR EL HEADER PARA PODER AUTHENTICARNOS <BR>";


// creamos el objeto que nos permite loguearnos
$header = new authentication (); // esta es una clase donde solo guardo los datos para pasar al webservice
//que quiero llamar


echo "Datos para enviar y loguearse al servicio: <br>";
echo "Usuario: ".$header->username."<br>";
echo "Password: ".$header->password."<br>";
echo "Domain: ".$header->domain."<br>";


$header2 = new SoapHeader($wsdl,"authentication", $header, false); //$headerNS,"authentication", $header,false);

$client->__setSoapHeaders(array($header2));

echo "<br>--------------------------------------<br>";
echo "respuesta encabezado soap <br>";
var_dump($client->__setSoapHeaders(array($header2)));


// creamos los datos que se enviarán para crear el alumno

$ident = array ('username'=> $user,
'password'=> $pass,
'remoteUserIndentifier' => $user);
$name = array ('firstName'=> $nombre,
'lastName' => $apellido);
$profile = array ('name' => $name,
'emailAddress' => $email);
$notification = array();
$params= array ('identification' => $ident,
'studentProfile' => $profile,
'notification' => $notification );

$result=$client->__soapCall('createStudent',$params);

echo "<br>--------------------------------------<br>";
echo "ultimo resultado de la llamada <br>";
var_dump($result);

Este código me tira el siguiente error:


Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'remoteUserIdentifier' property in C:\xampp\htdocs\WebServices\final.php:128 Stack trace: #0 C:\xampp\htdocs\WebServices\final.php(128): SoapClient->__soapCall('createStudent', Array) #1 {main} thrown in C:\xampp\htdocs\WebServices\final.php on line 128

El servicio reconoce la ip desde el cual llamamos a las funciones y esta tiene que estar declarada, pero el error persiste tanto en mi servidor local como en el servidor donde la ip está autorizada.

Ya me estoy volviendo loco, si me pueden orientar, se lo agradezco mucho

Gracias

Saludos

Optigas

Etiquetas: soap, webservice
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:16.