如何从ESP8266WebServer获取包含域名的完整URL地址
ESP8266WebServer库没有专门的「获取域名」方法,但你需要的域名本质是HTTP请求携带的Host头字段,库本身已经提供了对应的获取接口:
具体实现方式
- 直接调用内置的
hostHeader()方法,就能拿到完整的Host值,默认包含域名+端口(如果请求带非80/443端口的话会一起返回) - 仅需要纯域名的话,对返回的字符串做一次冒号切割即可
示例代码
#include <ESP8266WebServer.h> ESP8266WebServer server(80); void handleRequest() { // 拿Host(域名+可选端口) String host = server.hostHeader(); // 拿URI路径 String uri = server.uri(); // 剔除端口,仅保留纯域名 int colonIndex = host.indexOf(':'); if (colonIndex >= 0) { host = host.substring(0, colonIndex); } server.send(200, "text/plain", "域名:" + host + "\n路径:" + uri); } void setup() { // 此处省略WiFi连接初始化代码 server.on("/index", handleRequest); server.begin(); } void loop() { server.handleClient(); }
老版本兼容说明
如果你用的ESP8266核心库版本比较旧,没有hostHeader()方法,替换成server.header("Host")就能实现完全一样的效果。
内容的提问来源于stack exchange,提问作者will.mendil
相关产品推荐
相关产品推荐

