Wysyłanie zapytania http z podstawową autoryzacją

Arduino:
Wysyłanie zapytania http z podstawową autoryzacją

Jak to zrobić:

Instalacja biblioteki do zarządzania połączeniami WiFi i HTTP jest pierwszym krokiem. Użyjemy WiFiNINA.h i HTTPClient.h. Przykład kodu:

#include <WiFiNINA.h>
#include <HTTPClient.h>

const char* ssid = "Twoja-Siec-WiFi";
const char* password = "TwojeHaslo";
const char* serverName = "http://twoja.domena.com/ścieżka";
const char* httpUser = "użytkownik";
const char* httpPassword = "hasło";

WiFiClient wiFiClient;
HTTPClient httpClient;

void setup() {
  Serial.begin(115200);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Połączono z WiFi");
  
  httpClient.begin(wiFiClient, serverName);
  httpClient.setAuthorization(httpUser, httpPassword);
  
  int httpResponseCode = httpClient.GET();
  
  if (httpResponseCode > 0) {
    String payload = httpClient.getString();
    Serial.println(httpResponseCode);
    Serial.println(payload);
  } else {
    Serial.print("Błąd: ");
    Serial.println(httpResponseCode);
  }
  
  httpClient.end();
}

void loop() {
  // Nie ma potrzeby wykonywania żądania w pętli bez przerwy
}

Wyjście (sample output) będzie wyglądać jako ciąg informacji zwrotnych od serwera, w tym kod odpowiedzi, który powie nam, czy żądanie się powiodło.

Głębsze spojrzenie

O wykorzystaniu HTTP już w latach 90 XX wieku decydowała prostota i uniwersalność. W Arduino, do komunikacji z serwerami, kluczowe są biblioteki, takie jak WiFiNINA.h, która obsługuje standardy sieci WiFi, oraz HTTPClient.h, pozwalająca na tworzenie żądań HTTP.

Istnieją też alternatywy, jak ESP8266HTTPClient.h dla modułów ESP8266, czy rozwiązania zewnętrznych usług, np. IFTTT lub MQTT dla innych typów zadań IoT. Parametry uwierzytelnienia w ‘basic authentication’ są kodowane w base64, ale to załatwia za nas biblioteka ‘HTTPClient.h’.

Zobacz także

Dokumentacja i przykłady:

Wiedza o kodowaniu w base64 i uwierzytelnianiu HTTP:

Arduino i IoT: