HTTPS POST zahtjev
Što prikazuje ovaj primjer
Spojite se na svoju Wi-Fi mrežu i svakih 10 sekundi šaljite JSON POST zahtjev preko HTTPS-a, a zatim ispišite statusni kod i odgovor u Serial Monitoru. Skica šalje zahtjev na JSONPlaceholder, lažni API za testiranje: dobivate odgovor kakav daje pravi API, ali se ništa ne sprema. Pravi API obično traži API ključ i dodatne parametre. Skica koristi HTTPS bez provjere certifikata poslužitelja. Za zahtjev koji provjerava certifikat pogledajte HTTPS s certifikatom.
Prije prijenosa upišite naziv svoje mreže i lozinku između navodnika kod ssid i pass. Otvorite Serial Monitor na 115200 baud kako biste vidjeli što se događa.
Primjer koda
// Include needed libraries
#include "Inkplate.h"
#include "ArduinoJson.h"
#include "HTTPClient.h"
#include "WiFi.h"
#include <WiFiClientSecure.h>
// Enter your WiFi credentials
const char *ssid = "";
const char *pass = "";
// Specify the API URL to send a POST request
const char *apiUrl = "https://jsonplaceholder.typicode.com/posts";
// Specify the delay time between 2 POST requests in milliseconds
#define DELAY_BETWEEN_REQUESTS 10000
// Create objects from included libraries
WiFiClientSecure client;
HTTPClient http;
Inkplate display;
void setup()
{
// Init serial communication
Serial.begin(115200);
// Init the display
display.begin();
// Connect to WiFi
WiFi.begin(ssid, pass);
Serial.println("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("Connected to WiFi with IP address ");
Serial.println(WiFi.localIP());
// Use https but don't use a certificate
client.setInsecure();
}
void loop()
{
// Init HTTP client with secure wifi client and the API URL
http.begin(client, apiUrl);
// Add header. In your case maybe you must add more depending on your API
http.addHeader("Content-Type", "application/json");
// Create a JSON document for serializing data
const size_t CAPACITY = JSON_OBJECT_SIZE(1);
StaticJsonDocument<CAPACITY> doc;
// Convert the JSON document to a JSON object in order to add data
JsonObject object = doc.to<JsonObject>();
// Add data in the JSON object
object["title"] = "Hello Inkplate";
// Serialize the JSON object with your data to a JSON document for sending
char jsonOutput[128];
serializeJson(doc, jsonOutput);
// Send the POST request and save returned code
int httpCode = http.POST(String(jsonOutput));
// If the code is smaller than 0, something went wrong
if (httpCode > 0)
{
// Get the string returned by the HTTPS request and print the response
String payload = http.getString();
Serial.println("Status code: " + String(httpCode));
Serial.println(payload);
// End connection
http.end();
}
else
{
Serial.println("Error on HTTPS request");
}
// Wait for sending next request
delay(DELAY_BETWEEN_REQUESTS);
}
Ovaj primjer koristi i WiFi, HTTPClient i WiFiClientSecure (arduino-esp32), koji dolaze uz paket pločice ESP32 i nisu dio Inkplate biblioteke. Koristi i ArduinoJson (arduinojson.org), koji također nije dio Inkplate biblioteke. Njihove su funkcije u nastavku opisane onako kako ih skica koristi.
Korištene funkcije
Inkplate()returns NoneStvara Inkplate objekt. Inkplate 7SPECTRA ima jedan šesterobojni način rada, pa konstruktor ne prima argument načina rada.
ReturnsKonstruktor; nema povratne vrijednosti.
display.begin()returns voidInicijalizira biblioteku, periferiju i međuspremnik slike. Pozovite je jednom u setup().
ReturnsNišta.
Serial.begin(unsigned long baud)returns voidPokreće serijsku komunikaciju zadanom brzinom prijenosa (baud), ovdje 115200.
ReturnsNišta.
Serial.print(value)returns size_tIspisuje tekst u Serial Monitor bez novog retka.
ReturnsBroj ispisanih bajtova.
Serial.println(value)returns size_tIspisuje tekst iza kojeg slijedi novi redak u Serial Monitor.
ReturnsBroj ispisanih bajtova.
WiFi.begin(const char *ssid, const char *pass)returns wl_status_tPočinje spajanje na Wi-Fi mrežu.
ReturnsStatus veze.
WiFi.status()returns wl_status_tVraća status veze. Skica čeka dok ne postane WL_CONNECTED.
ReturnsStatus veze.
WiFi.localIP()returns IPAddressVraća IP adresu koju je pločica dobila na mreži.
ReturnsIP adresa pločice.
WiFiClientSecurereturns NoneKlasa Wi-Fi klijenta za HTTPS veze. Skica stvara jedan objekt, client, i prosljeđuje ga HTTP klijentu.
ReturnsTip; nema povratne vrijednosti.
HTTPClientreturns NoneKlasa HTTP klijenta. Skica stvara jedan objekt, http, i njime šalje POST zahtjev.
ReturnsTip; nema povratne vrijednosti.
JsonObjectreturns NoneArduinoJson tip za JSON objekt. Skica ga dobiva iz dokumenta i dodaje mu ključ title.
ReturnsTip; nema povratne vrijednosti.
WiFiClientSecure.setInsecure()returns voidPostavlja klijenta da koristi HTTPS bez provjere certifikata poslužitelja.
ReturnsNišta.
HTTPClient.begin(WiFiClient &client, String url)returns boolPokreće zahtjev prema adresi preko zadanog klijenta, ovdje sigurnog klijenta i adrese JSONPlaceholdera.
Returnstrue ako se zahtjev mogao pokrenuti.
HTTPClient.addHeader(const String &name, const String &value)returns voidDodaje zaglavlje zahtjevu. Skica postavlja Content-Type na application/json.
ReturnsNišta.
StaticJsonDocumentreturns NoneArduinoJson dokument fiksne veličine memorije, ovdje JSON_OBJECT_SIZE(1), prostor za jedan ključ i vrijednost.
ReturnsTip; nema povratne vrijednosti.
doc.to()returns JsonObjectArduinoJson funkcija koja pretvara dokument u prazan JSON objekt u koji možete dodavati podatke. Skica dodaje ključ title s vrijednošću Hello Inkplate.
ReturnsJSON objekt.
serializeJson(doc, char *output)returns size_tArduinoJson funkcija koja zapisuje dokument kao JSON tekst u međuspremnik.
ReturnsBroj zapisanih bajtova.
HTTPClient.POST(String payload)returns intŠalje tekst kao tijelo POST zahtjeva.
ReturnsHTTP statusni kod ili negativan broj u slučaju pogreške.
HTTPClient.getString()returns StringVraća tijelo odgovora kao tekst.
ReturnsTijelo odgovora.
HTTPClient.end()returns voidZavršava zahtjev i oslobađa njegove resurse.
ReturnsNišta.
delay(unsigned long ms)returns voidČeka zadani broj milisekundi: 500 između točkica veze i 10000 između zahtjeva.
ReturnsNišta.
Što očekivati
Serial Monitor prikazuje napredak spajanja, a zatim svakih 10 sekundi statusni kod i odgovor poslužitelja. Zaslon se ne koristi.
Connecting to WiFi
Iza ovog retka slijedi jedna točka svake pola sekunde dok se pločica ne spoji, zatim Connected to WiFi with IP address i adresa pločice. Nakon toga svaki zahtjev ispisuje Status code: s HTTP statusnim kodom koji je poslužitelj odgovorio, a zatim tijelo odgovora.
Ako zahtjev ne uspije, skica umjesto toga ispisuje Error on HTTPS request.
🔗Otvorite cjeloviti primjer
examples/Inkplate7SPECTRA/Advanced/WEB_WiFi/Inkplate7SPECTRA_HTTPS_POST_Request