Étape 6: Mise en oeuvre - demande d’envoi un HTTP avec Edison
Environnement Arduino Edison offre toutes les fonctions dont vous avez besoin pour effectuer une requête http. Juste inclure < Ethernet.h > et créer une instance de EthernetClient dans mon exemple déclaré en tant que « client ». Avoir un regard sur les exemples de l’écriture « Ethernet » au cas où vous souhaiteriez en savoir plus sur la bibliothèque.
Juste ici quelques extraits pour vous montrer les fonctionnalités de base de code. J’ai joint le code source entier en fin de compte - c’est ici pour vous comprendre - j’espère que c’est s’expliquer :
readstring Char [5000] ;
EthernetClient client ;
int i = 0 ;
la mac de Byte [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED} ;
IPAddress server(195,30,121,20) ; Serveur est efa.mvv-muenchen.de
Ethernet.Begin(Mac) ;
client.println(cmd) ; cmd est la requête que vous souhaitez envoyer sous forme de chaîne
{if(client.available())}
char c = client.read() ; lire un char
ReadString [i ++] = c ; Mettez-le dans le tableau de char
}
Si vous avez d’autres questions s’il vous plaît visitez : http://www.arduino.cc/en/reference/ethernet
La chaîne « cmd » doit avoir la même structure que la chaîne que nous avons utilisé dans netcat avant.
cmd = GET /xhr_departures? locationServerActive = 1 & apatrides = 1 & type_d... HTTP/1.0 "
Veillez à gérer l’heure et la date à l’intérieur de la chaîne (dans le bon format!). J’ai ajouté un « HTTP / 1.0 "en fin de compte comme cela a été fait dans les exemples.
Tout d’abord, vous devriez vérifier si vous obtenez les mêmes résultats qu’avec netcat en imprimant les caractères de la console série. Si vous n’avez pas - vous avez fait quelque chose de mal). Recherchez les fautes de frappe et n’oubliez pas d’envoyer qu'un saut de ligne « \n » en fin de compte.
Supposer que le travaille - félicitations ! Vous avez presque fini ! Le reste de votre travail consiste à extraire les informations que vous avez vraiment besoin de la chaîne reçue. Il faut que selon les données que vous recevez par le serveur. Je l’ai fait d’une manière « quick and dirty » et vous pouvez le faire beaucoup plus élégant.
J’ai jeter tous les caractères avant que je vois un début du corps. Vous n’avez pas à le faire -, mais il se sentait mal à l’aise garder toutes les données inutiles;). J’ai utilisé "si (strstr (readstring, « < tbody > »)) {" pour vérifier.
-J’ai cherché un modèle commun extraire les informations dont j’ai besoin. Avec « j » et « k », j’ai marquer l’index juste avant et après les caractères que j’ai besoin. Utiliser « indexOf » pour le trouver. Dans mon cas, le numéro de la ligne a été entouré de "... imprimable > "et « < \span > ». Utilisation « sous-chaîne » pour stocker la ligne numéro lui-même dans une chaîne distincte. Répéter que pour toutes les informations dont vous avez besoin.
j = bodyString.indexOf (« \"printable\ » >", j) + strlen ("\"printable\">") ;
k = bodyString.indexOf (« < /span > », j) ;
Content = bodyString.substring(j,k)