Créer une traceVisualiser une traceBibliothèqueCartesCommunauté ForumsToposLes plus belles randosSegmentsOutdoor StoriesOffre PremiumConnexion
VisuGPX
Sélectionner un fichier
.gpx .fit .tcx
Options

Le seuil et le lissage permettent d'optimiser le calcul du denivelé
Inscription
Entrez votre email et récupérez votre mot de passe dans votre boite
Ou
J'ai déjà un compte
Connexion
Entrez l'email et le mot de passe que vous avez reçu lors de votre inscription
Créer un compte | Mot de passe oublié
Accueil > Tous les forums > Tutoriels > Problème pour utiliser l'API

Problème pour utiliser l'API


Nouveau sujet Voir tous les sujets Chercher Archives
M
matthieu.brunet
[14 posts] - Le 24/12/2023 17:25

Bonjour,

J'utilise l'API de VisuGPX pour automatiquement modifier le GPX d'une trace (tel que documenté sous https://www.visugpx.com/api/documentation_api.php).
Avec la requête POST /api/modify/{id}, tout semble fonctionner mais ma trace n'est pas mise à jour.

Voici ma requête (en Node.JS) :

const exportTraceId = 'fKvc5LPbla';
let ret = await fetch(`https://www.visugpx.com/api/modify/${exportTraceId}`, {
method: 'POST',
headers: {
cle: VisuCle,
},
gpx: xml,
});
let txt = await ret.text();

avec la variable xml qui est une chaîne de caractère contenant le contenu d'un GPX licite

Quand je l'éxécute, j'ai un retour avec
ret.status=200
et txt='{"modified": fKvc5LPbla}'

Pourtant ma trace sous https://www.visugpx.com/fKvc5LPbla n'a pas été mise à jour.

Merci d'avance.

Admin
[6499 posts] - Le 24/12/2023 19:41

Bonsoir, effectivement ! C'est corrigé. Je file, la dinde brûle !
Bonnes fêtes

M
matthieu.brunet
[14 posts] - Le 25/12/2023 17:40

Bonsoir,

Joyeux Noël.

Je suis désolé mais je n'y arrive toujours pas.
J'ai toujours un retour {"modified": fKvc5LPbla}
mais sans modification quand je rafraîchis https://www.visugpx.com/fKvc5LPbla

J'ai essayé plusieurs modifications.
Notamment passer l'argument en JSON, mais rien n'y fait :

async function metMultitraceSurVisuGpx(gpx) {
let body = JSON.stringify({ gpx: gpx.toXml() });
// const params = new URLSearchParams();
// params.append('gpx', gpx.toXml());
let ret = await fetch(`https://www.visugpx.com/api/modify/${exportTraceId}`, {
method: 'POST',
headers: {
cle: VisuCle,
'Content-Type': 'application/json',
},
body,
});
let txt = await ret.text();
console.log(`Terminé : Mise à jour de la trace ${exportTraceId} avec retour : `, txt);
return ret;
}


Merci d'avance.

Admin
[6499 posts] - Le 25/12/2023 22:04

Bonjour, je vous ai relu et je comprend.

En fait le fichier devait être envoyé comme une donnée de formulaire (formData), pas comme une chaine de caractère. Je viens de modifier l'API pour autoriser les 2, ça doit être mieux, merci de confirmer. Veillez juste à ce que votre fichier soit correctement url-encodé avant de l'envoyer, je ne sais pas si Node?js gère ça en natif.

Cdlt

M
matthieu.brunet
[14 posts] - Le 26/12/2023 05:25

Bonjour,

Désolé mais je n'y arrive toujours pas.

Si je passe en données de formulaire plutôt qu'en encodage JSON, voici le début de la chaîne de caractères que mon programme envoie dans le body de la requête POST.

gpx=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22+standalone%3D%22no%22+%3F%3E%3Cgpx+xmlns%3D%22http%3A%2F%2Fwww.topografix.com%2FGPX%2F1%2F1%22+xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22+xsi%3AschemaLocation%3D%22http%3A%2F%2Fwww.topografix.com%2FGPX%2F1%2F1+http%3A%2F%2Fwww.topografix.com%2FGPX%2F1%2F1%2Fgpx.xsd%22+version%3D%221.1%22+creator%3D%22tourmagne.bike%22%3E%3Cmetadata%3E%3Cname%3ETourmagne+v20231226%3C%2Fname%3E%3C%2Fmetadata%3E%3Cwpt+lat%3D%2747.97532%27+lon%3D%272.77147%27%3E%3Cele%3E115.6%3C%2Fele%3E%3Ctype%3E%3C%21%5BCDATA%5Bboulangerie%5D

et ça continue sur un gros flux GPX URL-encodé.

Ça devrait marcher ainsi, non ?

Est-il possible d'avoir plus de verbiage dans la chaîne de caractères de retour plutôt que {"modified": fKvc5LPbla}, ça m'aiderait à comprendre où ça échoue ?

D'avance merci.

Admin
[6499 posts] - Le 26/12/2023 09:16

Bonjour,

L'envoi du fichier est facultatif car il est possible de modifier uniquement les données liées à la fiche (titre, description, ...). Le verbiage de la chaine de retour signifie que tout s'est bien passé... car le serveur ne reçoit pas la donnée gpx (sinon, soit elle serait traitée, soit ça retournerait une erreur).

Les données attendues sont de type formulaire web, l'entête correspondant est soit "application/x-www-form-urlencoded" si la variable gpx est de type text (contenu du fichier GPX encodé), soit "multiform/part-data" si elle est de type type file.

Essayez de tester avec https://chromewebstore.google.com/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm

Deux exemples

1. Avec application/x-www-form-urlencoded et erreur




2. Avec multiform/part-data et sucess


M
matthieu.brunet
[14 posts] - Le 28/12/2023 11:38

OK, merci.
Problem solved!

Connectez-vous pour poster
Pour soutenir VisuGPX, faites le bon choix
En cliquant sur "accepter" vous autorisez l'utilisation de cookies à usage technique nécessaires au bon fonctionnement du site, ainsi que l'utilisation d'autres cookies (éventuellement tiers) à des fins statistiques ou de personnalisation des annonces pour vous proposer des services et des offres adaptées à vos centres d'interêt.

Vous pouvez à tout moment modifier ce choix ou obtenir des informations sur ces cookies sur la page des conditions générales d'utilisation du service :
REFUSER
ACCEPTER