Calcul kilométrage avec "viamichelin"[résolu]
zhuzhu
Membre
Voilà je souhaite savoir le kilométrage entre deux villes en envoyant les deux villes ainsi que les codes postaux ( le tout de type NString*) au site "viamichelin" mais je n'est pas d'idée de comment faire, si vous auriez une petite idée je suis preneurs.
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
ba parce dans le cahier des charges de mon projet, je doit impérativement passé par "viamichelin" pour le kilométrage ^^" .
Toujours le même prof dingue, avec un bagage de connaissance minimum, très certainement incapable de faire lui-même ce qu'il te demande ? Ni même de savoir si c'est possible. J'avais le même genre de prof dans mon BTS !
Vas regarder sur le site viamichelin, si les créateurs mettent à disposition une API, c'est-à -dire un protocole permettant à une application de demander des informations sans passer par une page oueb.
Voila, il y a effectivement une API comme l'anglaise qui-ne-connait-pas-le-doctor-who l'a trouvé !
Effectivement c'est lui ^^" je galère pas mal à finir mon projet, merci pour les réponses je vais travailler dessus cette après-midi, je donnerais des nouvelles en fin de journée.
désolé je suis hors timing fixé ^^, j'ai tapé ceci:
maintenant j'ai ceci :
avec l'erreur: Too many arguments to function "URLWithString"
%d pour des int
Les espaces dans l'URL, c'est normal ?
url est nil?
Pourrais-tu utiliser la balise code ?
URLWithString ne prend qu'un seul argument NSString en paramètre, hors là tu lui passe 6 paramètres ! Essaye de créer ta string avant d'appeler la méthode URLWithString puis de faire juste :
stringWithFormat de NSString.
Tu ne peux pas utiliser les formats dan [NSURL URLWithString:...]
pas une mauvaise idée, il ne me met plus d'erreur
C'est pas mon boulot d'ajouter les balises de code sur vos messages. S'il vous plaà®t se souvenir de leurs utilisation.
(méthode stringByAddingPercentEscapes de NSString)
Et je plussoie Joanna, utilise les balises CODE pour mettre du code dans tes messages !
Demain je vais travailler sur "comment récupéré les données de la page html que le site génère " ^^
désolé pour les balises CODE je tacherais de les mettre à l'avenir.
Regarde le lien de Joanna, ça te permettra de construire une requête qui va te retourner les infos via michelin sous forme de xml ou de json. ça sera plus simple à utiliser et surtout plus facile à maintenir et bien plus rapide que de trier les infos dans une page web
Si c'est ça que tu es parti pour faire (requêter la page Web et parser le HTML plutôt que passer par l'API officielle), c'est une très très mauvaise idée car :
- C'est souvent illégal (ça s'appelle du crawling, et les conditions générales d'utilisation du site l'interdit en général)
- Ce n'est pas adapté (c'est bien plus compliqué que de parser du JSON par exemple) et pas fait pour (y compris en terme de charge pour les serveurs de viamichelin)
- Ca risque de toute façon de ne plus marcher un jour si viamichelin décide de faire un relooking de sa page Web.
Se reposer sur la structure de la page Web pour récupérer des données est à éviter à tout prix, encore plus alors que viamichelin fournit une API donc tu n'as aucune raison de ne pas utiliser leur API officielle faite pour.
J'essais juste de récupéré le kilométrage entre 2 villes avec "via michelin", j'ai essayé d'utilisé l'url que via michelin fournissait mais je n'est pas réussi, du coup j'essai de m'adapter.
j'ai un ami qui a réussi à récupéré le kilométrage viamichelin sans compte en utilisant le même url que moi, mais il développe sous qtcreator.
Je viens de faire un test pour voir si le string de "monUrl" est correcte et il s'avère qu'il est faux
si je remplace par www.google.fr, je récupère bien le contenu de la page de cette façon:
si je met url que jai crée de cette façon :
cela ne fonctionne pas
Avec ton URL tu vas réussir à récupérer le kilométrage, c'est pas bien compliqué si tu maà®trise un peu le HTML et le JS mais comme Aligator l'a bien expliqué ce n'est pas la bonne méthode :
- Plus difficile à parser que du JSON ou XML et surement moins complet qu'en passant par l'API
- le moindre petit changement de design ou d'architecture dans la page via michelin et ton truc marche plus
Donc le mieux ça reste d'utiliser la méthode que Joanna t'a donné. Un peu d'aide pour commencer :
- tu as un exemple en bas de page, le lien te redirige vers un xml type de l'api, tu peux facilement identifier le kilométrage global de l'itinéraire (dans la balise totalDist) donc ça devrait pas etre trop dur à parser
- il faut commencer par bien construire ta requête, pour cela tu vas devoir créer un compte sur viaMichelin, et des coordonnées de départ et d'arrivé (et des étapes si tu en as)
Pour construire t'as requête tu peux t'appuyer sur l'exemple :
ca sa changera pas pour toutes tes requêtes
tu indique ici si tu veux du xml ou du json
la langue que tu souhaite utiliser (fra pour français, eng pour anglais)
les coordonnées de départ et d'arrivé
tes info de connexion
Pour les coordonnées de départ et d'arrivé, j'ai pas trop creusé la question mais à première vu le plus simple est d'utiliser la longitude et la latitude. Tu peux aussi utiliser des poi
ali, je fait juste un test pour pouvoir adapter ce bout de code pour la suite de mon appli, car les valeurs des différentes variables seront dynamique et dépendrons du choix que fera l'utilisateur.
Après avoir fait afficher l'url dans l'invit de commande je retrouve ceci:
et il s'avère que cela fonctionne, il y a juste :
qui refuse de prendre le "monUrl".
EltonCosmonote, je vais mettre ce que je récupère dans un NSString puis utilisé NSScanner pour récupéré le kilométrage, je suis débutant et je n'est pas envi de m'embêter à "parser" du json ou du XML alors que je ne le maitrise pas.
ça peut être le moment d'apprendre