Problemi quando vado a testare il webservice

Problemi quando vado a testare il webservice

di Antonio Barone -
Numero di risposte: 17

Salve riscontro questo seguente errore quando fare a testare il webservice:

'<?xml version="1.0" encoding="UTF-8" ?>

<EXCEPTION class="webservice_access_exception">
<ERRORCODE>accessexception</ERRORCODE>
<MESSAGE>Eccezione nel controllo accesso</MESSAGE>
</EXCEPTION>
'

Come posso risolvere questo problema?

Media dei voti:  -
In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Antonio Barone -

Ti ringrazio per la risposta: io eseguito i seguenti passaggi:

1) ho abilitato il WebService con la documentazione;

2) Ho creato un utente che avesse tutti i privileggi;

3)Ho creato un servizio assegnato a quel utente

4) Ho attivato un protocollo (REST)

5) Ho creato un token per quel utente.


Dove sto sbagliando? In allegato inserisco le screen in formato zip



In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Sara Cenni -

Così al volo direi che non hai abilitato i metodi che vuoi utilizzare.

Nello screenshot 3 se clicchi funzioni cosa vedi? C'è il metodo/funzione che stai richiamando?

In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Antonio Barone -

gli ho abilitato tutte le funzioni

Allegato Immagine.png
In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Sara Cenni -

Sai che in effetti anche nella mia piattaforma di sviluppo ottengo lo stesso errore usando il client di test? sorpreso Ma da codice php esterno funziona correttamente... Appena mi riprendo dal rientro dalla vacanze sorridente faccio qualche prova... Nel 2015 mi sembrava che funzionasse ma chi si ricorda più? :P

Cmq prova a richiamare il webservice esternamente e verifica se così funziona...

In riposta a Sara Cenni

Re: Problemi quando vado a testare il webservice

di Antonio Barone -
è da molto tempo che sto lavorando su questa cosa; potresti spiegarmi passo passo su come si fa per richiamare il webservice esternamente?
In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Sara Cenni -

Io sono partita da questi file di esempio: https://github.com/moodlehq/sample-ws-clients copiando questa cartella: PHP-REST e modificando questo file https://github.com/moodlehq/sample-ws-clients/blob/master/PHP-REST/client.php con i miei dati (se non ricordo male c'era un problema con questo valore: $user2->timezone = 'Pacific/Port_Moresby'; ) .

In allegato trovi un prototipo che crea una categoria e che puoi adattare alle tue esigenze.


In riposta a Sara Cenni

Re: Problemi quando vado a testare il webservice

di Antonio Barone -

la ringrazio, ma in questa cosa sono poco pratico; potreste allegarmi un prototipo per la creazione di un utente? Puoi dirmi in quale directory devo inserire il file?

In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Sara Cenni -

Il file che ti ho allegato e il file curl.php li puoi inserire in qualsiasi directory del server. 

Intanto prova se così funziona.


Per la creazione degli utenti puoi sostituire il nome della funzione con la funzione con quella di creazione degli utenti e poi correggere i parametri di conseguenza (guarda il file client.php)

In riposta a Sara Cenni

Re: Problemi quando vado a testare il webservice

di Antonio Barone -

ho eseguito il file nella directory principale del moodle; ma mi da il seguente errore:


<br />
<b>Warning</b>:  require_once(./curl.php): failed to open stream: No such file or directory in <b>/mnt/DATA/www/testbarone/moodle/index_1_1.php</b> on line <b>17</b><br />
<br />
<b>Fatal error</b>:  require_once(): Failed opening required './curl.php' (include_path='.:/usr/share/php:/usr/share/pear') in <b>/mnt/DATA/www/testbarone/moodle/index_1_1.php</b> on line <b>17</b><br />

in allegato l'immagine

Allegato screen1.png
In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Antonio Barone -

Ho creato lo script per la creazione dell'utente ma ora mi da il seguente errore:


<?xml version="1.0" encoding="UTF-8" ?>
<EXCEPTION class="invalid_parameter_exception">
<ERRORCODE>invalidparameter</ERRORCODE>
<MESSAGE>E' stato rilevato un parametro non valido</MESSAGE>
</EXCEPTION>
errore!
Qual'è? il parametro non valido? il allegato metto lo script!
In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Sara Cenni -

Usa solo username,password,firstname, lastname ed email.

Ovviamente lo username non deve già esistere.

In riposta a Sara Cenni

Re: Problemi quando vado a testare il webservice

di Antonio Barone -

grazie mille, ho risolto; esiste un api che mi permette di registrare gli utenti ai corsi tramite web service?

In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Sara Cenni -

Non l'ho mai usato ma direi: enrol_manual_enrol_users 

In riposta a Sara Cenni

Re: Problemi quando vado a testare il webservice

di Antonio Barone -

gentilmente, potreste farmi un esempio di come si utilizza?

In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Antonio Barone -
io ho un utente con id 30;

ruolo corso student id 5;

e il corso ha un id 5;

lo script che ho generato è questo:


<?php

$token = 'f4e2932b2969768c4a9de692b86c40e4';

$domainname = 'http://192.168.1.3/testbarone/moodle';

$functionname = 'enrol_manual_enrol_users';

$restformat = 'xml';



$enrolment = new stdClass();



$enrolment->roleid = 5;

$enrolment->userid = 30;

$enrolment->courseid = 5;

$params = array($enrolment);


header('Content-Type: text/plain');

$serverurl = $domainname . '/webservice/rest/server.php'. '?wstoken=' . $token . '&wsfunction='.$functionname;

require_once('./curl.php');

$curl = new curl;


$restformat = ($restformat == 'json')?'&moodlewsrestformat=' . $restformat:'';

$resp = $curl->post($serverurl . $restformat, $params);

print_r($resp);

$xmldat=simplexml_load_string($resp);

//print_r ($xmldat);

if (isset($xmldat->MULTIPLE->SINGLE->KEY[0])) {

    $ris = $xmldat->MULTIPLE->SINGLE->KEY[0];

    echo $ris['name'];

    echo $xmldat->MULTIPLE->SINGLE->KEY[0]->VALUE;

}

else 

    echo "errore!";

//print_r ($xmldat->multiple->single->key[0]);

//$i= $xmldat->item->name;

?>


MA MI GENERA IL SEGUENTE ERRORE:


<?xml version="1.0" encoding="UTF-8" ?>
<EXCEPTION class="invalid_parameter_exception">
<ERRORCODE>invalidparameter</ERRORCODE>
<MESSAGE>E' stato rilevato un parametro non valido</MESSAGE>
</EXCEPTION>
errore!

quali sono i parametri che sbaglio a passare? In allegato il codice

In riposta a Antonio Barone

Re: Problemi quando vado a testare il webservice

di Matteo Scaramuccia -

Ciao Antonio,
anziché:

$enrolment = new stdClass();
$enrolment->roleid = 5;
$enrolment->userid = 30;
$enrolment->courseid = 5;
$params = array($enrolment);

devi scrivere:

$enrolment = new stdClass();
$enrolment->roleid = 5;
$enrolment->userid = 30;
$enrolment->courseid = 5;
$enrolments = array( $enrolment );
$params = array( 'enrolments' => $enrolments );

HTH,
Matteo

P.S.: un consiglio spassionato... formatta il codice con il tag HTML <pre />: i lettori te ne saranno grati ammiccante.