Created
June 5, 2018 09:15
-
-
Save bblanchon/0721bf8c81e67334d69d17ef4c8a3401 to your computer and use it in GitHub Desktop.
Unable to reproduce issue #746
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ArduinoJson - arduinojson.org | |
// Copyright Benoit Blanchon 2014-2018 | |
// MIT License | |
#include <ArduinoJson.h> | |
#include <Ethernet.h> | |
#include <SPI.h> | |
void setup() { | |
// Initialize Serial port | |
Serial.begin(9600); | |
while (!Serial) continue; | |
// Initialize Ethernet library | |
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; | |
if (!Ethernet.begin(mac)) { | |
Serial.println(F("Failed to configure Ethernet")); | |
return; | |
} | |
delay(1000); | |
Serial.println(F("Connecting...")); | |
// Connect to HTTP server | |
EthernetClient client; | |
client.setTimeout(10000); | |
if (!client.connect("api.myjson.com", 80)) { | |
Serial.println(F("Connection failed")); | |
return; | |
} | |
Serial.println(F("Connected!")); | |
// Send HTTP request | |
client.println(F("GET /bins/eao36 HTTP/1.0")); | |
client.println(F("Host: api.myjson.com")); | |
client.println(F("Connection: close")); | |
if (client.println() == 0) { | |
Serial.println(F("Failed to send request")); | |
return; | |
} | |
// Check HTTP status | |
char status[32] = {0}; | |
client.readBytesUntil('\r', status, sizeof(status)); | |
if (strcmp(status, "HTTP/1.1 200 OK") != 0) { | |
Serial.print(F("Unexpected response: ")); | |
Serial.println(status); | |
return; | |
} | |
// Skip HTTP headers | |
char endOfHeaders[] = "\r\n\r\n"; | |
if (!client.find(endOfHeaders)) { | |
Serial.println(F("Invalid response")); | |
return; | |
} | |
// Allocate JsonBuffer | |
// Use arduinojson.org/assistant to compute the capacity. | |
const size_t bufferSize = 10*JSON_ARRAY_SIZE(3) + JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(10) + 200; | |
StaticJsonBuffer<bufferSize> jsonBuffer; | |
// Parse JSON object | |
JsonObject& root = jsonBuffer.parseObject(client); | |
if (!root.success()) { | |
Serial.println(F("Parsing failed!")); | |
return; | |
} | |
// Extract values | |
Serial.print(F("status.description = ")); | |
Serial.println(root["status"]["description"].as<char*>()); | |
// Disconnect | |
client.stop(); | |
} | |
void loop() { | |
// not used in this example | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment