Récupérer réponse serveur arduino

Bonjour à  tous, pour mes besoins personnels, je réalise une app qui doit m'afficher la réponse de mon serveur arduino. Jusque là  j'utilisais du xml ( un peu compliqué à  parser)

Jaimerai maintenant que ma réponse soit du html et donc je dois récupérer la valeur se trouvant dans une balise.

D'après vous, comment puis je faire ça ? Comment récupérer la réponse du serveur , la valeur de la balise et l'afficher dans un label ?

Merci d'avance

Réponses

  • L'html ce n'est qu'un xml "évolué".


  • Bonjour,


     


    Pour ce qui est de l'Arduino, il faut l'utiliser comme serveur WEB. Le lient suivant devrait te permettre de le mettre en place:http://phmarduino.free.fr/


    En ce qui concerne l'accès à  la page html fournie à  l'Arduino avec iOS, tu peux trouver quelques informations intéressantes à  cette adresse: http://pagesperso-systeme.lip6.fr/Fabrice.Kordon/5I452-2014/semaine-05.php


    Regardes les UIWebView.


     


    Bonne journée,


     


    Brut de pomme


  • Merci pour vos réponse, mais côté arduino , tout fonctionne parfaitement, c côté iOS que jaimerai récupérer ce que j'ai dans ma balise, sans utiliser NSXMLParser
  • ça c'est du challenge !


    Parser du XML sans utiliser NSXMLParser.


  • Et pourquoi ne pas utiliser une librairie pour te simplifier le travail. Je ne l'ai jamais utilisé mais celle-ci semble intéressante.


     


    https://cocoapods.org/pods/CheatyXML

  • AliGatorAliGator Membre, Modérateur
    Double-challenge :
    - Parser du HTML, c'est loin d'être simple... à  part si le HTML est du XHTML/4.0 qui a justement la spécificité d'être forcément du XML valide (contrairement aux versions précédentes de HTML où on pouvait avoir des balises non fermées comme "<br>" qui était valide en HTML mais rendait le document non valide XML)
    - Si ton HTML est du XHTML, parser le XML sans NSXMLParser, faut utiliser une autre lib, type librairie de parsing DOM, et je ne sais pas s'il y en a beaucoup qui sont encore maintenues (genre TinyXML ou TBXMLParser je crois qu'ils accumulent les warnings dans leur code source qui n'ont jamais été corrigés, TBXML est un peu à  l'abandon, etc)

    Clairement de toute façon le format XML n'est pas l'idéal pour l'échange de données avec le mobile " préférer le JSON qui est le format de choix évidemment - et le HTML est encore moins un bon choix car non garanti d'être compatible XML.
  • Oui voila tout est dit par Ali.


    Faut faire attention quand on doit manipuler de l'html, en général cela ne peut pas se faire avec un parser SAX standard, car l'html n'est pas "qu'un xml évolué", l'html possède des balises qui peuvent ne pas être fermer, et géré ça avec du SAX c'est un vrai casse tête.


    Et l'html est, et doit être, beaucoup plus tolérant au irrégularité.


    Html n'est pas un format d'échange de donnée, c'est un format d'affichage.


    Donc il ne faut pas utilisé l'html pour s'échanger des données, mais encapsuler l'html dans un format fait pour ça (json comme proposé par Ali, ou XML par exemple).


    Par exemple dans le cas d'un article de blog, mon webservice renverrai un JSON qui contiendrai plusieurs champs (id, title, author, createdAt, updatedAt, contentHtml)


    Et le champs contentHtml contiendrait le contenu de l'article au format html.


    Mais le format de transfère sera le JSON, et contentHtml sera afficher tel quel, pas pour échanger des données, mais simplement pour l'afficher.


     


     


    Après cette (très courte) introduction, en iOS tu peux utiliser UIWebView (voir WKWebView, mais je connais pas) pour manipuler du html (par contre bonjour les perfs dégradé). Par exemple tu charges dans ton html dans une webview invisible, puis tu executes du Javascript sur cette webview pour récupérer des informations concernant le dom html ainsi charger.

    Il met déjà  arrivé d'afficher une page web dans une webview, et d'executer du javascript pour récuperer le contenu de la balise title de la page. (Pour l'afficher dans la navigation bar de l'application)


  • Ok merci, alors je vais continuer avec mon xml et NSXMLParser !

    Y a pas de raisons, ça mettra le temps qu'il faudra, mais j'arriverai à  afficher le contenue de la balise dans mon label !


    Merci encore à  vous tous
  • DrakenDraken Membre
    juillet 2015 modifié #10

    C'est facile de parser de l'XML avec NSXMLParser. As-tu regardé les vidéos du prof Kordon sur le sujet ? 


     


    Une vidéo expliquant la théorie :


    http://pagesperso-systeme.lip6.fr/Fabrice.Kordon/5I452-2014/index.php?C=10&S=10


     


    Une vidéo montrant un exemple simple :


    http://pagesperso-systeme.lip6.fr/Fabrice.Kordon/5I452-2014/index.php?C=10&S=11


     


    Le sujet d'épreuve de l'attestation du MOOC de Kordon étais basé sur le parsing d'un fichier XML. J'avais un peu peu d'appréhension en abordant cette partie. Je n'ai eu aucun problème après avoir regardé ces vidéos.


  • Draken, oui parser de l'xml avec un SAX Parser (comme NSXMLParser) n'est pas très compliquer en soit.


     


    Mais faut avouer qu'entre simplement faire



    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:myData options:nil error:nil];

    pour récupérer le contenu d'un JSON sous forme de dictionnaire.


     


    Et sortir toute la lourdeur logique d'un SAX parser (faut créer un délégate, gérer les attributs et les tags avec des accumulateur etc..., pas si simple), mon coeur penche vers la solution JSON.


  • Ah oui, effectivement. Vive le progrès !


Connectez-vous ou Inscrivez-vous pour répondre.