Arduino:
שליחת בקשת HTTP עם אימות בסיסי
איך לעשות:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "yourSSID";
const char* password = "yourPASSWORD";
const char* serverName = "http://yourserver.com";
const char* httpUsername = "user";
const char* httpPassword = "pass";
WiFiClient client;
HTTPClient http;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
if (http.begin(client, serverName)) {
http.setAuthorization(httpUsername, httpPassword);
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
} else {
Serial.println("Error on HTTP request");
}
http.end();
}
}
void loop() {
// Keep the loop empty if you don't need to perform actions continuously
}
זה דוגמה פשוטה לקוד שמתחבר ל-WiFi ושולח בקשת GET עם אימות בסיסי.
צלילה לעומק
בדיוק כמו בדפדפן, גם המיקרו-בקרים שלנו צריכים להיות מאומתים בפני שרתים. אימות בסיסי ב-HTTP הוא חלק ממודל אבטחת האינטרנט מאז שנות ה-90. גישה אלטרנטיבית לאימות היא OAuth, שהוא יותר מאובטח אך גם מורכב יותר להטמעה. בבקשה שלנו, אנחנו שולחים שם משתמש וסיסמה בצורה מקודדת בבייס64 בכותרת Authorization.
ראה גם
- מדריך ESP8266 HTTPClient: https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/client-examples.html
- מידע על אימות בסיסי ב-HTTP: https://tools.ietf.org/html/rfc7617
- אימות בטוח יותר עם OAuth: https://oauth.net