Arduino:
使用基本认证发送 HTTP 请求
如何做:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "your_SSID"; // 替换成你的网络名
const char* password = "your_PASSWORD"; // 替换成你的密码
const char* http_username = "your_username"; // HTTP认证用户名
const char* http_password = "your_password"; // HTTP认证密码
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
HTTPClient http;
http.begin("http://yourwebsite.com/data"); // 替换成你要请求的网址
http.setAuthorization(http_username, http_password); // 设置基本认证
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() {
// 这里不需要代码
}
输出应该显示HTTP状态码和请求的数据。
深入了解
发送带有基本认证的HTTP请求这个概忈在互联网早期就被广泛使用了。尽管它不如新兴的认证方式(如OAuth)安全,但因其实施简单,至今仍在许多场合被使用。Arduino通过WiFi库可以实现HTTP请求,而基本认证则通过HTTPClient库中的setAuthorization
方法来设置。这适用于小型项目或快速原型,但对于更安全或更复杂的认证要求,则可能需要寻找其他方法。
参见
- ESP8266WiFi 库文档:https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html
- ESP8266HTTPClient 库文档:https://arduino-esp8266.readthedocs.io/en/latest/esp8266httpclient/readme.html
- HTTP 状态码参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status