EduWireApps / ecoledirecte-api-docs

70 stars 15 forks source link

Missing Parameters #12

Closed Odissine closed 8 months ago

Odissine commented 10 months ago

Hello, je sais pas si c'est un bug ou une évolution de comment appeler l'API ... mais j'arrive pas à appeler le cahier de texte

POST > https://api.ecoledirecte.com/v3/E/{{eleve_id}}/cahierdetexte.awp?verbe=get POST > https://api.ecoledirecte.com/v3/eleves/{{eleve_id}}/cahierdetexte.awp?verbe=get GET > https://api.ecoledirecte.com/v3/E/{{eleve_id}}/cahierdetexte.awp GET > https://api.ecoledirecte.com/v3/eleves/{{eleve_id}}/cahierdetexte.awp

J'ai testé de rajouter au cas ou dans body { "date" : "2023-10-03" }

Tout est ok mais j'ai sans arrêt le meme résultat :

{"code":225, "token":"", "host":"HTTPxxx", "message":"Paramètres spécifiés incorrects !"}

Si vous avez une idée d'ou vient le problème ? J'arrive à bien récupérer l'emploi du temps (POST + verbe=get) mais le cahier de texte ca veut pas :(

azgaresncf commented 10 months ago

image La requête selon la date est disponible ici

kekaaafm commented 10 months ago

Une update @Odissine ?

silversmarty commented 10 months ago

Idem chez moi, je n'arrive pas à utiliser le cahier de texte (même retour en erreur)

Odissine commented 10 months ago

Une update @Odissine ?

Pas pour l'instant jai pas eu le temps de m'y repencher et je vois que je suis pas le seul, je creuse ça rapidement dès que jai le temps :)

kekaaafm commented 10 months ago

Cette issue n'a plus d'activité depuis un petit moment, on la considère donc comme résolue !

silversmarty commented 9 months ago

Hum ... il n'y a pas eu de solution apportée, il me semble ? Je viens de refaire le test, et c'est toujours KO :-(

silversmarty commented 9 months ago

Merci @MaitreRouge pour la réouverture ! Comment est-ce que je peux aider à la résolution de ce bug ?

amolinarius commented 9 months ago

Bonjour à tous, Personnellement le cahier de texte marche pour moi. J'ai remarqué qu'EcoleDirecte renvoie une erreur 225 également lorsqu'il n'y a simplement pas le token ou pas de User-Agent. Avez-vous pensé à mettre les deux dans les headers de la requête ? image

silversmarty commented 9 months ago

Hello @amolinarius ! Merci pour message, j'ai bien vérifié de mon côté et j'ai bien le token et le user agent. J'ai repris la même config que d'autres appels API d'école directe (comme l'emploi du temps), ça me permet de dire que le problème ne vient pas de là. Mais le fait que cela marche chez toi est encourageant !

Est-ce que tu pourrais partager la config de ton appel API ? Si tu es sur Node Red, c'est un json il me semble, ça nous permettrait d'y voir plus clair ;-)

Merci !

amolinarius commented 9 months ago

Bonsoir @silversmarty ! Mon appel est fait avec une fonction JavaScript, la voici :

function sendXHR(url, queryString, body, callback) {
    var xhr = new XMLHttpRequest();
    xhr.onloadend = r=>callback(r.target);
    xhr.open('POST', `https://api.ecoledirecte.com/v3/${url}.awp${queryString.length>0?'?':''}${queryString.join('&')}`);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    if (token) {xhr.setRequestHeader('X-Token', token)}
    xhr.send(encodeURIComponent('data='+body));
}

et je l'appelle avec :

sendXHR(
    `/Eleves/${id}/cahierdetexte`, // url
    ['verbe=get'],  // paramètres dans l'url
    '{}', // body
    callback // une fonction prenant la réponse à la requête comme paramètre 
);

Note : Comme j'ai utilisé cette fonction dans un script de navigateur, je n'ai pas mis de User-Agent, pour ceux qui testeraient avec NodeJS

amolinarius commented 9 months ago

D'ailleurs on peut aussi le faire en asynchrone avec une Promise, toujours en javascript :

function sendXHR(url, queryString, body, callback) {
    var xhr = new XMLHttpRequest();
    var response;
    xhr.onloadend = r=>{response = r.target};
    xhr.open('POST', `https://api.ecoledirecte.com/v3/${url}.awp${queryString.length>0?'?':''}${queryString.join('&')}`);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    if (token) {xhr.setRequestHeader('X-Token', token)}
    xhr.send(encodeURIComponent('data='+body));
    var promise = resolve=>{
        if (response == null) {setTimeout(()=>promise(resolve), 100)}
        else {resolve(response)}
    }
    return new Promise(promise);
}

Puis simplement var response = await sendXHR(...)

silversmarty commented 8 months ago

Merci @amolinarius , j'ai trouvé le problème ! J'ai rajouté le "data={}" dans le body, que j'avais oublié ! J'ai aussi enlevé le paramètre v=4.40.0, et rajouté le header Content-Type !

Thanks again !

amolinarius commented 8 months ago

De rien ! Je voulais juste préciser que le paramètre v=4.40.0 n'est pas obligatoire mais on peut quand même le mettre. J'imagine qu'il sert à utiliser une version précise de l'API ou dans l'autre cas simplement la dernière version.