Homologar moodle para el SEPE

Homologar moodle para el SEPE

de Jesús Cárdenas -
Número de respuestas: 7

Buenas tardes,

Tras seguir los pasos en un tema de este foro donde un usuario (F Caracuel) explica detalladamente como empezar con los servicios que solicitan me da el siguiente error:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>WSDL</faultcode>
<faultstring>
SOAP-ERROR: Parsing WSDL: Unknown required WSDL extension 'http://schemas.xmlsoap.org/ws/2004/09/policy'
</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Me gustaría saber a que es debido este error ya que no encuentro solución por la red.

Saludos y gracias por todo.



Promedio de valoraciones: -
En respuesta a Jesús Cárdenas

Re: Homologar moodle para el SEPE

de Juan Carlos Chávez Herrera -

hola no se mucho sobre el tema pero bueno hace poco tenia problemas sobre como consumir servicios por soap y ya lo logre. Lo primero que tienes que hacer es configurarlo en el propio moodle y abilitarle la pestaña de documentación. Recuerda de cambiar los parapetros para el modle tuyo


<?php
// This file is NOT a part of Moodle - http://moodle.org/
//
// This client for Moodle 2 is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//

/**
 * SOAP client for Moodle 2
 *
 * @authorr Jerome Mouneyrac
 */

/// SETUP - NEED TO BE CHANGED
$token = '6431d9eec3ce33940c87c77a3998d856';
$domainname = 'http://11.128.102.111:5903';
$functionname = 'core_user_create_users';

//////// moodle_user_create_users ////////

/// PARAMETERS - NEED TO BE CHANGED IF YOU CALL A DIFFERENT FUNCTION
$user1 = new stdClass();
$user1->username = 'henrypruebaaaaaaaaaaaaa';
$user1->password = '1Qazxsw@';
$user1->firstname = 'henrypruebaaaaaaaaaaaaaaaa';
$user1->lastname = 'henrypruebaaaaaaaaaaaaaaaaaaaa';
$user1->email = 'henrypruebaaaaaaaaaaaaaaaaaaa@xetid.cu';
$user1->auth = 'manual';
//$user1->idnumber = 'testidnumber1';
$user1->lang = 'es';
$user1->calendartype = 'gregorian';
//$user1->theme = 'standard';
//$user1->timezone = '-12.5';
//$user1->mailformat = 0;
//$user1->description = 'Hello World!';
//$user1->city = 'testcity1';
//$user1->country = 'au';
//$preferencename1 = 'preference1';
//$preferencename2 = 'preference2';
//$user1->preferences = array(
   // array('type' => $preferencename1, 'value' => 'preferencevalue1'),
  //  array('type' => $preferencename2, 'value' => 'preferencevalue2'));
//$user2 = new stdClass();
//$user2->username = 'testusername2';
//$user2->password = 'Testpassword2!';
//$user2->firstname = 'testfirstname2';
//$user2->lastname = 'testlastname2';
//$user2->email = 'testemail2@moodle.com';
//$user2->timezone = 'Pacific/Port_Moresby';
$params = array($user1/*, $user2*/);

/// SOAP CALL
$serverurl = $domainname . '/webservice/soap/server.php'. '?wsdl=1&wstoken=' . $token;


//Check that the wsdl is available (no authentication error)
//Note: the wsdl generation script could return a xml error document instead of a WSDL document.
//      SoapClient() would not recognize this xml error document as a WSDL document and it will throw an invalid WSDL exception.
//      So we need to catch these WSDL generation errors first.
//      TODO: try this check only once. Then cache the WSDL. You don't want to do this extra call all the time.
$xml = simplexml_load_file($serverurl);
$faulcode = $xml->xpath('/SOAP-ENV:Envelope/SOAP-ENV:Body/SOAP-ENV:Fault/faultcode');
if (!empty($faulcode[0])) {
    $faultcode = (array) $faulcode[0];
    print_r($faultcode[0]);

    $faultstring = $xml->xpath('/SOAP-ENV:Envelope/SOAP-ENV:Body/SOAP-ENV:Fault/faultstring');
    if (!empty($faultstring[0])) {
        $faultstring = (array) $faultstring[0];
        print_r('<BR/>');
        print_r($faultstring[0]);
    }
    die();
}

////Do the main soap call
$client = new SoapClient($serverurl);

try {
$resp = $client->__soapCall($functionname, array($params));
} catch (Exception $e) {
    print_r($e);
}
if (isset($resp)) {
    print_r($resp);die('FIN');
}

En respuesta a Juan Carlos Chávez Herrera

Re: Homologar moodle para el SEPE

de Manuel Vega -

Buenos días,

Espero puedan ayudarme!!. Estoy empezando a validar mi plataforma y tengo que realizar la conexión con el SEPE pero tengo un lio hecho que ya no sé ni lo que estoy haciendo. Imagino que a todos los habrá pasado jeje( o eso espero).

Os comento,

He creado un rol nuevo en mi moodle para la utilización de SOAP y REST (aunque sé que solo se utiliza SOAP). He habilitado la documentación y el protocolo SOAP, creado un usuario con una contraseña y creado un servicio para la utilización del servidor web.

Ahora estoy trabajando en hacer una serie de archivos PHP para la conexión. Mi pregunta es:

1- Me falta algo mas para hacer en mi plataforma moodle?

2- A la hora de crear el cliente SOAP en los archivos php que tengo que pasarle el usuario creado en moodle?

Gracias!







En respuesta a Manuel Vega

Re: Homologar moodle para el SEPE

de Fernando Navarro Páez -

Hola Manuel.

Ánimo con la tarea sonrisa

Con respecto al usuario, el SEPE usa siempre el mismo. Cuando solicitas la acreditación sólo tienes que indicar la url de seguimiento y la contraseña que le has asignado.

El kit de autoevaluación del servicio web del SEPE está bastante completo  ya que además de documentación y una prueba funcional incluye un proyecto para hacer las pruebas usando SoapUI. 

Salu2

Fernando

En respuesta a Fernando Navarro Páez

Re: Homologar moodle para el SEPE

de Manuel Vega -

Buenos días Fernando,

La verdad que ando perdido en este tema.

En cuanto al kit no lo  he probado todavía. Estoy usando los ejemplo que puso F. CARACUEL y otros datos que puso otra persona del foro. Yo uso el programa SoapUI cargándole el wsdl de este ejemplo y haciendo las request me va mostrando lo que voy haciendo te lo explico por si acaso estoy haciendo algo mal jeje. 

A partir de ahí tengo que ir haciendo las funciones y desarrollándolas para que al hacer las request me devuelva algo no? 

Actualmente tengo hechas la de obtenerDatosDelCentro y obtenerListaAcciones pero al generar otras funciones que tengo desarrolladas me dan estos errores :

 -  SOAP-ERROR: Encoding: Violation of encoding rules

 - Cannot use object of type stdClass as array

Yo lo estoy haciendo en Local... crees que es mejor que suba la plataforma al servidor y haga las modificaciones en el servidor directamente o es mejor hacerlo todo en Local?


Gracias!

En respuesta a Manuel Vega

Re: Homologar moodle para el SEPE

de Fernando Navarro Páez -

Hola Manuel.

El problema que comentas no está relacionado con estar desarrollando en local.

"Cannot use object of type stdClass as array" no está directamente relacionado con SOAP sino con algo que no estás haciendo correctamente en el código.

Además de SOAPUI deberías usar el kit de autoevaluación del SEPE para comprobar si lo que estás haciendo está bien o no. 

Ya nos vas contando ;,-)

Salu2

Fernando

En respuesta a Fernando Navarro Páez

Re: Homologar moodle para el SEPE

de Manuel Vega -

Buenas tardes,

Esto mismo lo he puesto en otro hilo de este foro.

Pido por favor si me podéis ayudar a la realización de la homologación del SEPE. Llevo semanas trabajando con esta conexión y ya esque no se que mas hacer. Tengo varios fallos que me salen cuando trabajo con SOAPUI, entre ellos uno que me busca un objeto de tipo stdsclass y por mas que miro el código no sé lo que estoy haciendo mal. Lo he modificado ya tantas veces que ya tengo un lío montado brutal.


Alguien me podría ayudar con la programación de esta conexión que lo tengo terminado o que pueda ayudarme con el código? 


¨Muchas gracias!