mirror of
https://github.com/arduino-libraries/ArduinoHttpClient.git
synced 2025-04-19 21:22:15 +03:00
107 lines
3.1 KiB
C++
107 lines
3.1 KiB
C++
/*
|
|
Dweet.io GET client for ArduinoHttpClient library
|
|
Connects to dweet.io once every ten seconds,
|
|
sends a GET request and a request body. Uses SSL
|
|
|
|
Shows how to use Strings to assemble path and parse content
|
|
from response. dweet.io expects:
|
|
https://dweet.io/get/latest/dweet/for/thingName
|
|
|
|
For more on dweet.io, see https://dweet.io/play/
|
|
|
|
note: WiFi SSID and password are stored in config.h file.
|
|
If it is not present, add a new tab, call it "config.h"
|
|
and add the following variables:
|
|
char ssid[] = "ssid"; // your network SSID (name)
|
|
char pass[] = "password"; // your network password
|
|
|
|
created 15 Feb 2016
|
|
updated 16 Feb 2016
|
|
by Tom Igoe
|
|
|
|
this example is in the public domain
|
|
*/
|
|
#include <ArduinoHttpClient.h>
|
|
#include <WiFi101.h>
|
|
#include "config.h"
|
|
|
|
const char serverAddress[] = "dweet.io"; // server address
|
|
int port = 80;
|
|
String dweetName = "scandalous-cheese-hoarder"; // use your own thing name here
|
|
|
|
WiFiClient wifi;
|
|
HttpClient client = HttpClient(wifi, serverAddress, port);
|
|
int status = WL_IDLE_STATUS;
|
|
int statusCode = 0;
|
|
String response;
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
while (!Serial);
|
|
while ( status != WL_CONNECTED) {
|
|
Serial.print("Attempting to connect to Network named: ");
|
|
Serial.println(ssid); // print the network name (SSID);
|
|
|
|
// Connect to WPA/WPA2 network:
|
|
status = WiFi.begin(ssid, pass);
|
|
}
|
|
|
|
// print the SSID of the network you're attached to:
|
|
Serial.print("SSID: ");
|
|
Serial.println(WiFi.SSID());
|
|
|
|
// print your WiFi shield's IP address:
|
|
IPAddress ip = WiFi.localIP();
|
|
Serial.print("IP Address: ");
|
|
Serial.println(ip);
|
|
}
|
|
|
|
void loop() {
|
|
// assemble the path for the GET message:
|
|
String path = "/get/latest/dweet/for/" + dweetName;
|
|
|
|
// send the GET request
|
|
Serial.println("making GET request");
|
|
client.get(path);
|
|
|
|
// read the status code and body of the response
|
|
statusCode = client.responseStatusCode();
|
|
response = client.responseBody();
|
|
Serial.print("Status code: ");
|
|
Serial.println(statusCode);
|
|
Serial.print("Response: ");
|
|
Serial.println(response);
|
|
|
|
/*
|
|
Typical response is:
|
|
{"this":"succeeded",
|
|
"by":"getting",
|
|
"the":"dweets",
|
|
"with":[{"thing":"my-thing-name",
|
|
"created":"2016-02-16T05:10:36.589Z",
|
|
"content":{"sensorValue":456}}]}
|
|
|
|
You want "content": numberValue
|
|
*/
|
|
// now parse the response looking for "content":
|
|
int labelStart = response.indexOf("content\":");
|
|
// find the first { after "content":
|
|
int contentStart = response.indexOf("{", labelStart);
|
|
// find the following } and get what's between the braces:
|
|
int contentEnd = response.indexOf("}", labelStart);
|
|
String content = response.substring(contentStart + 1, contentEnd);
|
|
Serial.println(content);
|
|
|
|
// now get the value after the colon, and convert to an int:
|
|
int valueStart = content.indexOf(":");
|
|
String valueString = content.substring(valueStart + 1);
|
|
int number = valueString.toInt();
|
|
Serial.print("Value string: ");
|
|
Serial.println(valueString);
|
|
Serial.print("Actual value: ");
|
|
Serial.println(number);
|
|
|
|
Serial.println("Wait ten seconds\n");
|
|
delay(10000);
|
|
}
|