Skip to main content

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​

Select Board
Inkplate7SPECTRA_HTTPS_POST_Request.ino
// 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 None

Stvara 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 void

Inicijalizira biblioteku, periferiju i međuspremnik slike. Pozovite je jednom u setup().

ReturnsNišta.

Serial.begin(unsigned long baud)returns void

Pokreće serijsku komunikaciju zadanom brzinom prijenosa (baud), ovdje 115200.

ReturnsNišta.

Serial.print(value)returns size_t

Ispisuje tekst u Serial Monitor bez novog retka.

ReturnsBroj ispisanih bajtova.

Serial.println(value)returns size_t

Ispisuje tekst iza kojeg slijedi novi redak u Serial Monitor.

ReturnsBroj ispisanih bajtova.

WiFi.begin(const char *ssid, const char *pass)returns wl_status_t

Počinje spajanje na Wi-Fi mrežu.

ReturnsStatus veze.

WiFi.status()returns wl_status_t

Vraća status veze. Skica čeka dok ne postane WL_CONNECTED.

ReturnsStatus veze.

WiFi.localIP()returns IPAddress

Vraća IP adresu koju je pločica dobila na mreži.

ReturnsIP adresa pločice.

WiFiClientSecurereturns None

Klasa Wi-Fi klijenta za HTTPS veze. Skica stvara jedan objekt, client, i prosljeđuje ga HTTP klijentu.

ReturnsTip; nema povratne vrijednosti.

HTTPClientreturns None

Klasa HTTP klijenta. Skica stvara jedan objekt, http, i njime šalje POST zahtjev.

ReturnsTip; nema povratne vrijednosti.

JsonObjectreturns None

ArduinoJson tip za JSON objekt. Skica ga dobiva iz dokumenta i dodaje mu ključ title.

ReturnsTip; nema povratne vrijednosti.

WiFiClientSecure.setInsecure()returns void

Postavlja klijenta da koristi HTTPS bez provjere certifikata poslužitelja.

ReturnsNišta.

HTTPClient.begin(WiFiClient &client, String url)returns bool

Pokreć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 void

Dodaje zaglavlje zahtjevu. Skica postavlja Content-Type na application/json.

ReturnsNišta.

StaticJsonDocumentreturns None

ArduinoJson dokument fiksne veličine memorije, ovdje JSON_OBJECT_SIZE(1), prostor za jedan ključ i vrijednost.

ReturnsTip; nema povratne vrijednosti.

doc.to()returns JsonObject

ArduinoJson 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_t

ArduinoJson 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 String

Vraća tijelo odgovora kao tekst.

ReturnsTijelo odgovora.

HTTPClient.end()returns void

Završ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.

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
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

→