¿Tienes un Arduino con Shield de Ethernet? Entonces aquí tienes un buen reto para divertirte unos días (bueno, de hecho no lo sé, quizá ya hasta tienes un ejercicio similar resuelto).
El reto
Es sencillo, copia y pega este código en un proyecto de Arduino.
#include <SPI.h> #include <Ethernet.h> byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0xEC, 0x6C }; EthernetClient client; void setup() { Serial.begin(9600); if (Ethernet.begin(mac) == 0) { Serial.println("Datos: Fallidos"); for (;;) ; } } void loop() { send_request(); wait_response(); read_response(); end_request(); delay(5000); } void send_request() { Serial.println("Datos:Conectando"); if (client.connect("internetofthingsservice.azure-mobile.net", 80)) { client.println("GET /tables/FocosDomotica HTTP/1.1"); client.println("Host: internetofthingsservice.azure-mobile.net"); client.println("X-ZUMO-APPLICATION: NQUWuGZifGtkFdLSJuCjeFrBYhCXcB59"); client.println("Accept: application/json"); client.println(); Serial.println("Datos: Enviados "); } else { Serial.println("Conexion: Fallida"); } } void wait_response() { while (!client.available()) { if (!client.connected()) { return; } } } void read_response() { bool print = true; while (client.available()) { char c = client.read(); Serial.print(c); } } void end_request() { client.stop(); } |
Una vez que lo hayas hecho, ejecuta el proyecto y notarás que el resultado es el siguiente en cada iteración (cinco segundos).
Como puedes ver el resultado realmente necesario es:
Si deseas ver el resultado de una manera más cómoda puedes entrar a este sitio y ver el resultado al ingresar los siguientes parámetros.
Aquí los datos en texto plano:
Destino: internetofthingsservice.azure-mobile.net/tables/focosdomotica
Headers:
Host: internetofthingsservice.azure-mobile.net
X-ZUMO-APPLICATION: NQUWuGZifGtkFdLSJuCjeFrBYhCXcB59
Accept: application/json
Así que el reto consiste en lograr obtener esta cadena sin los headers que la acompañan. Es decir, de la respuesta obtenida debes eliminar toda la respuesta y mantener únicamente el resultado del JSON.
Se vale utilizar el lenguaje únicamente o bibliotecas de terceros para obtener el resultado pero cuidando al máximo el rendimiento del procesador.
El primero en responder se ganará una playera de C# y una memoria de 16 GB además de recibir el merecido crédito en cada demo que utilice esta funcionalidad.
¿Quién dice yo?